Unity简单实现TCP/IP中的客户端功能

前言

在上篇博客中,我介绍了下使用Unity简单实现TCP/IP的服务端的功能,今天在这篇博客中我介绍下实现客户端的功能,具体实现方法如下所示。

实现步骤

1.新建项目,在场景中新建一个InputField和一个Button,用于给服务端发送数据,如下图所示:

2.新建SocketClient.cs脚本,用于实现TCP/IP的客户端功能,具体代码如下所示:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;public class SocketClient : MonoBehaviour
{int _port = 6000;string _ip = "127.0.0.1";public InputField input;Thread c_thread;void Start(){StartClient();}// Use this for initializationpublic void StartClient(){bt_connect_Click();}public void SendMsg(){bt_send_Click(input.text);}Socket socketSend;private void bt_connect_Click(){try{//创建客户端Socket,获得远程ip和端口号socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);IPAddress ip = IPAddress.Parse(_ip);IPEndPoint point = new IPEndPoint(ip, _port);socketSend.Connect(point);Debug.Log("连接成功!");//开启新的线程,不停的接收服务器发来的消息c_thread = new Thread(Received);c_thread.IsBackground = true;c_thread.Start();}catch (Exception){Debug.Log("IP或者端口号错误...");}}/// <summary>/// 接收服务端返回的消息/// </summary>void Received(){while (true){try{byte[] buffer = new byte[1024 * 1024 * 3];//实际接收到的有效字节数int len = socketSend.Receive(buffer);if (len == 0){break;}string str = Encoding.UTF8.GetString(buffer, 0, len);Debug.Log("客户端打印:" + socketSend.RemoteEndPoint + ":" + str);}catch { }}}/// <summary>/// 向服务器发送消息/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void bt_send_Click(string str){try{string msg = str;byte[] buffer = new byte[1024 * 1024 * 3];buffer = Encoding.UTF8.GetBytes(msg);socketSend.Send(buffer);}catch { }}public void SocketQuit(){//关闭线程if (c_thread != null){c_thread.Interrupt();c_thread.Abort();}//最后关闭服务器if (socketSend != null)socketSend.Close();print("diconnect");}void OnApplicationQuit(){//退出时关闭连接SocketQuit();}
}

3.将SocketClient.cs脚本挂载到场景中的物体上,并且将InputField赋值到该脚本上,如下图所示:

4.将SocketClient.cs的发送数据的方法赋值到场景中的按钮上,如下图所示:

5.打开网络助手,建立一个TCP服务端,配置如下图所示:

6.运行网络助手与客户端,使用客户端发送数据,发现网络助手已经接收到了数据,如下图所示:

相关链接

项目Demo

Unity简单实现TCP/IP中的客户端功能相关推荐

  1. 笨办法学C 练习45:一个简单的TCP/IP客户端

    练习45:一个简单的TCP/IP客户端 原文:Exercise 45: A Simple TCP/IP Client 译者:飞龙 我打算使用RingBuffer来创建一个非常简单的小型网络测试工具,叫 ...

  2. 网络原理 | TCP/IP中的连接管理机制 重要协议与核心机制

    应用层.传输层.网络层.数据链路层.物理层 一.应用层协议 应用层 是程序猿最最经常打交道的一层 其他四层,都是操作系统.驱动.硬件,实现好了的,咱们不需要管 (除非你是系统工程师,驱动开发工程师-- ...

  3. 计算机的端口以及tcp/ip中的端口

    物理端口和TCP/IP协议中的端口 在网络技术中,端口(Port)大致有两种意思: 一是物理意义上的端口,比如,ADSL Modem.集线器.交换机.路由器用于连接其他网络设备的接口,如RJ-45端口 ...

  4. TCP通讯中:客户端软件如何指定本地端口号?

    TCP通讯中:客户端如何指定软件的本地端口号? 最近在Socket 通讯中用 Socket完成了对客户端 接收服务端信息以及 往服务端发送信息的功能.具体方法介绍如下: 通过Load方法 加载到指定的 ...

  5. wireshark的使用教程--用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的

     wireshark的使用教程 --用实践的方式帮助我们理解TCP/IP中的各个协议是如何工作的 wireshark是一款抓包软件,比较易用,在平常可以利用它抓包,分析协议或者监控网络,是一个比较好的 ...

  6. linux下用C语言实现TCP/IP服务器与客户端互相发送数据的socket编程

    linux下用C语言实现TCP/IP服务器与客户端互相发送数据的socket编程 server.c #include <sys/stat.h>#include <fcntl.h> ...

  7. TCP/IP五层协议及功能

    ** TCP/IP五层协议及功能 ** 第一层--物理层(Physical) 物理层:作为放置传输数据载体介质的一层,存在着大量数据传输通道的实物载体,类似架空明线.平衡电缆.光纤.无线信道等. 主要 ...

  8. qt中socket通信流程图_使用QT实现简单的tcp/ip通信

    使用QT实现tcp/ip的通信非常的简单,下面我将直接贴出代码: 一.服务器端 1.头文件#ifndef SERVERWIDGET_H #define SERVERWIDGET_H #include ...

  9. HTTP 协议 - 简单谈谈 TCP / IP (一)

    原文连接 blog TCP / IP 基本概念 世界上几乎所有的 HTTP 协议都是由 TCP / IP 协议来承载的.它是互联网相关的各类协议族的总称(通常所说的规则,就是协议). 从输入的 URL ...

  10. c语言tcp实现网络断点续传,简单实现tcp/ip下的文件断点续传

    Array.link({""name1"":Type.isNumber, ""name2"": Type.isStrin ...

最新文章

  1. mbr备份以及破坏后如何恢复
  2. uva11728alternate task所有因子
  3. [转] PHP在不同页面之间传值的三种常见方式
  4. windows + vscode 远程配置
  5. 分布式全局ID生成器设计
  6. linux内核字符串逆序,Linux内核中常用字符串函数实现
  7. 前端工作面试问题(下)
  8. qt 获取发送信号的对象
  9. H264 帧边界识别简介
  10. python 怎么样去txt中提取xml_Python根据XML批量创建TXT并提取信息,python,xml,txt
  11. J03-Java IO流总结三 《 FileInputStream和FileOutputStream 》
  12. 我的linux 常用命令
  13. 松露菌行业调研报告 - 市场现状分析与发展前景预测
  14. ElasticSearch 集群监控
  15. Vue-注册全局组件的两种方法
  16. python里面Dataset干嘛的_用 Python 对成绩分类汇总!
  17. idea toolbar靠右显示
  18. 链接Maya和UE4实现real-time预览——Connecting Maya to Unreal with Live Link
  19. java 逆矩阵_用Java实现求逆矩阵
  20. Mac VMWare键盘鼠标失灵

热门文章

  1. 阿里云java短信验证码接口教程
  2. 掰芹菜、砸钢琴:脑洞大开的游戏音效制作方式
  3. 群晖 DSM DS918 PVE PROXMOX 万兆网卡 直通
  4. redis特殊数据类型geospatial
  5. TOEFL备考2.23
  6. 日常的VPS维护技巧
  7. AUTOSAR C++14编码规范的前世今生
  8. html懒羊羊首页带登录注册功能(源码全)
  9. 365天深度学习打卡第N1周:Pytorch文本分类入门
  10. 客观的聊聊看视频学习的方式到底如何