Unity网络通信与端口通信

这篇博客探讨了Unity中进行网络通信时遇到的挑战,包括UDP协议、TCP连接的使用,特别是在接收端遇到的问题。作者指出更新循环内及协程中处理接收不可行,必须在新线程中进行,但不正确关闭线程会导致程序卡死。另外,UDP广播在某些平台上的接收不稳定,解决方案是增加接收判断,但这可能导致接收短命令的错误。建议避免发送三个字符以下的命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unity的网络通信这块是个坑,还有端口通信。

首先是网络通信,网络通信有Udp协议,Tcp短链接,Tcp长连接等等。搜的话网上一大堆代码。

但是我在使用中遇到了一些问题,发送端没啥好说的,主要是接收端。问题如下:

1.首先是接收端写法,在update里面写和在协程里面写都不行,只有在新开的线程中才可以使用,但是

如果关闭的时候没关闭好线程就会导致程序未响应卡死。

2.udp广播在不同平台上有时候接收不到。

using UnityEngine;
using System.Collections;
//引入库
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

public class UdpServer : MonoBehaviour
{
           //接收的字符串
    //
    public string strRecvData;//接收到的消息
    public bool IsNewRecv;//是否接收到新的消息,当接收到消息将其改为false
    //以下默认都是私有的成员
    Socket socket;          //目标socket
    EndPoint clientEnd;     //客户端
    IPEndPoint ipEnd;       //侦听端口
    string sendStr;         //发送的字符串
    string recvStr;
    byte[] recvData = new byte[1024]; //接收的数据,必须为字节
    byte[] sendData = new byte[1024]; //发送的数据,必须为字节
    int recvLen; //接收的数据长度
    Thread connectThread; //连接线程

    string strTextData = "Data:";
    //初始化
    void I
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值