写一个unity使用tcp通讯时示例
时间: 2024-04-14 16:25:34 浏览: 94
当使用Unity进行TCP通讯时,可以按照以下示例代码进行操作:
1. 创建一个服务器端:
```csharp
using UnityEngine;
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class TCPServer : MonoBehaviour
{
private TcpListener server;
private TcpClient client;
private NetworkStream stream;
private byte[] buffer;
private void Start()
{
// 创建服务器端并监听指定端口
server = new TcpListener(IPAddress.Any, 7777);
server.Start();
// 接受客户端连接
client = server.AcceptTcpClient();
stream = client.GetStream();
// 初始化缓冲区
buffer = new byte[1024];
// 开始异步读取数据
stream.BeginRead(buffer, 0, buffer.Length, ReceiveCallback, null);
}
private void ReceiveCallback(IAsyncResult result)
{
try
{
// 结束异步读取,并获取读取的字节数
int bytesRead = stream.EndRead(result);
if (bytesRead > 0)
{
// 处理接收到的数据
string message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Debug.Log("Received message: " + message);
// 继续异步读取数据
stream.BeginRead(buffer, 0, buffer.Length, ReceiveCallback, null);
}
else
{
// 客户端断开连接,关闭服务器端
stream.Close();
client.Close();
server.Stop();
}
}
catch (Exception e)
{
Debug.LogError("Error receiving message: " + e.Message);
}
}
}
```
2. 创建一个客户端:
```csharp
using UnityEngine;
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class TCPClient : MonoBehaviour
{
private TcpClient client;
private NetworkStream stream;
private void Start()
{
// 创建客户端并连接到服务器
client = new TcpClient();
client.Connect(IPAddress.Loopback, 7777);
stream = client.GetStream();
// 发送消息
string message = "Hello, server!";
byte[] buffer = Encoding.UTF8.GetBytes(message);
stream.Write(buffer, 0, buffer.Length);
// 关闭连接
stream.Close();
client.Close();
}
}
```
在示例中,服务器端创建了一个TcpListener对象并开始监听指定端口。当有客户端连接时,通过TcpClient接受连接,并获取网络流用于数据传输。然后,使用异步读取方式不断接收客户端发送的数据。接收到数据后,进行处理并继续异步读取。
客户端创建一个TcpClient对象,并使用Connect方法连接到服务器的IP地址和端口。然后,获取网络流并发送消息。发送完毕后,关闭连接。
以上是一个简单的TCP通讯示例,可以根据具体需求进行修改和扩展。需要注意的是,在实际应用中,还需要处理异常、加入协议等更多细节。
阅读全文