unity中UDP通信

unity中UDP通信

2023年7月15日发(作者:)

unity中UDP通信unity中UDP通信服务器:using System;using tions;using c;using ;using s;using ;using ing;using UnityEngine;using ;public class UdpServer : MonoBehaviour{//以下默认都是私有的成员Socket socket; //⽬标socketEndPoint clientEnd; //客户端IPEndPoint ipEnd; //侦听端⼝string recvStr; //接收的字符串string sendStr; //发送的字符串byte[] recvData = new byte[1024]; //接收的数据,必须为字节byte[] sendData = new byte[1024]; //发送的数据,必须为字节int recvLen; //接收的数据长度Thread connectThread; //连接线程//初始化void InitSocket(){ //定义侦听端⼝,侦听任何IP ipEnd = new IPEndPoint(, 8999); //定义套接字类型,在主线程中定义 socket = new Socket(etwork, , ); //服务端需要绑定ip (ipEnd); //定义客户端 IPEndPoint sender = new IPEndPoint(, 0); clientEnd = (EndPoint)sender; print("waiting for UDP dgram"); //开启⼀个线程连接,必须的,否则主线程卡死 connectThread = new Thread(new ThreadStart(SocketReceive)); ();}void SocketSend(string sendStr){ //清空发送缓存 sendData = new byte[1024]; //数据类型转换 sendData = es(sendStr); //发送给指定客户端 (sendData, , , clientEnd);}//服务器接收void SocketReceive(){ //进⼊接收循环 while (true) while (true) { //对data清零 recvData = new byte[1024]; //获取客户端,获取客户端数据,⽤引⽤给客户端赋值 recvLen = eFrom(recvData, ref clientEnd); print("message from: " + ng()); //打印客户端信息 //输出接收到的数据 recvStr = ing(recvData, 0, recvLen); print("我是服务器,接收到客户端的数据" + recvStr); //将接收到的数据经过处理再发送出去 sendStr = "From Server: " + recvStr; SocketSend(sendStr); }}//连接关闭void SocketQuit(){ //关闭线程 if (connectThread != null) { upt(); (); } //最后关闭socket if (socket != null) (); print("disconnect");}// Use this for initializationvoid Start(){ InitSocket(); //在这⾥初始化server}void OnApplicationQuit(){ SocketQuit();}}客户端:using tions;using c;using UnityEngine;using ;using s;using ;using ing;using ;public class UdpClient : MonoBehaviour{string editString = “hello wolrd”; //编辑框⽂字//以下默认都是私有的成员Socket socket; //⽬标socketEndPoint serverEnd; //服务端IPEndPoint ipEnd; //服务端端⼝string recvStr; //接收的字符串string sendStr; //发送的字符串byte[] recvData = new byte[1024]; //接收的数据,必须为字节byte[] sendData = new byte[1024]; //发送的数据,必须为字节byte[] sendData = new byte[1024]; //发送的数据,必须为字节int recvLen; //接收的数据长度Thread connectThread; //连接线程//初始化void InitSocket(){ //定义连接的服务器ip和端⼝,可以是本机ip,局域⽹,互联⽹ ipEnd = new IPEndPoint(("172.168.1.103"), 8999); //定义套接字类型,在主线程中定义 socket = new Socket(etwork, , ); //定义服务端 IPEndPoint sender = new IPEndPoint(, 0); serverEnd = (EndPoint)sender; print("waiting for sending UDP dgram"); //建⽴初始连接,这句⾮常重要,第⼀次连接初始化了serverEnd后⾯才能收到消息 SocketSend("hello"); //开启⼀个线程连接,必须的,否则主线程卡死 connectThread = new Thread(new ThreadStart(SocketReceive)); ();}void SocketSend(string sendStr){ //清空发送缓存 sendData = new byte[1024]; //数据类型转换 sendData = es(sendStr); //发送给指定服务端 (sendData, , , ipEnd);}//服务器接收void SocketReceive(){ //进⼊接收循环 while (true) { //对data清零 recvData = new byte[1024]; //获取客户端,获取服务端端数据,⽤引⽤给服务端赋值,实际上服务端已经定义好并不需要赋值 recvLen = eFrom(recvData, ref serverEnd); print("message from: " + ng()); //打印服务端信息 //输出接收到的数据 recvStr = ing(recvData, 0, recvLen); print("我是客户端,接收到服务器的数据" + recvStr); }}//连接关闭void SocketQuit(){ //关闭线程 if (connectThread != null) { upt(); (); } //最后关闭socket if (socket != null) ();}// Use this for initialization// Use this for initializationvoid Start(){ InitSocket(); //在这⾥初始化}void OnGUI(){ editString = eld(new Rect(10, 10, 100, 20), editString); if ((new Rect(10, 30, 60, 20), "send")) SocketSend(editString);}// Update is called once per framevoid Update(){}void OnApplicationQuit(){ SocketQuit();}}

发布者:admin,转转请注明出处:http://www.yc00.com/web/1689408780a243338.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信