unity tcpip通讯
时间: 2024-03-16 21:38:45 浏览: 79
tcp ip 通信
Unity中的TCP/IP通信是指使用TCP/IP协议进行网络通信的一种方式。通过TCP/IP通信,可以实现不同设备之间的数据传输和交互。
在Unity中,可以使用C#的Socket类来实现TCP/IP通信。以下是一个简单的示例代码,演示了如何在Unity中建立一个TCP服务器和一个TCP客户端:
1. TCP服务器端代码:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using UnityEngine;
public class TCPServer : MonoBehaviour
{
private TcpListener server;
private TcpClient client;
private void Start()
{
// 创建服务器监听
server = new TcpListener(IPAddress.Any, 8888);
server.Start();
// 接受客户端连接
client = server.AcceptTcpClient();
Debug.Log("Client connected!");
// 开启接收消息的线程
System.Threading.Thread receiveThread = new System.Threading.Thread(ReceiveMessage);
receiveThread.Start();
}
private void ReceiveMessage()
{
try
{
// 获取网络流
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
int bytesRead;
while (true)
{
// 读取客户端发送的消息
bytesRead = stream.Read(buffer, 0, buffer.Length);
string message = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
Debug.Log("Received message: " + message);
}
}
catch (Exception e)
{
Debug.Log("Error: " + e.Message);
}
}
private void OnDestroy()
{
// 关闭连接
client.Close();
server.Stop();
}
}
```
2. TCP客户端代码:
```csharp
using System;
using System.Net.Sockets;
using UnityEngine;
public class TCPClient : MonoBehaviour
{
private TcpClient client;
private void Start()
{
// 创建客户端连接
client = new TcpClient();
client.Connect("127.0.0.1", 8888);
Debug.Log("Connected to server!");
// 开启发送消息的线程
System.Threading.Thread sendThread = new System.Threading.Thread(SendMessage);
sendThread.Start();
}
private void SendMessage()
{
try
{
// 获取网络流
NetworkStream stream = client.GetStream();
while (true)
{
// 从控制台读取消息并发送给服务器
string message = Console.ReadLine();
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(message);
stream.Write(buffer, 0, buffer.Length);
}
}
catch (Exception e)
{
Debug.Log("Error: " + e.Message);
}
}
private void OnDestroy()
{
// 关闭连接
client.Close();
}
}
```
以上代码演示了一个简单的TCP服务器和TCP客户端的实现。服务器监听本地IP地址的8888端口,客户端连接到服务器的IP地址和端口。服务器接收客户端发送的消息并打印到控制台,客户端从控制台读取消息并发送给服务器。
注意:以上代码仅为示例,实际使用时需要进行错误处理、线程管理等。
阅读全文