unity socket实现不同端口接收不同数据
时间: 2024-05-12 07:13:42 浏览: 93
socket实现服务端与客户端的同步/异步接收
5星 · 资源好评率100%
在 Unity 中,你可以使用 C# 的 System.Net.Sockets 命名空间来实现 socket 编程。要实现不同端口接收不同数据,你可以分别创建多个 Socket 对象,并将每个 Socket 绑定到不同的端口号上。
以下是一个简单的示例代码,演示如何实现在不同端口上接收不同数据:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class SocketReceiver
{
private Socket[] sockets = new Socket[2];
private byte[] buffer = new byte[1024];
public void Start()
{
// 创建两个 Socket 对象,并分别绑定到不同的端口上
sockets[0] = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sockets[0].Bind(new IPEndPoint(IPAddress.Any, 1234));
sockets[1] = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
sockets[1].Bind(new IPEndPoint(IPAddress.Any, 5678));
// 开始异步接收数据
for (int i = 0; i < sockets.Length; i++)
{
Socket socket = sockets[i];
EndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEP, new AsyncCallback(OnReceive), socket);
}
}
private void OnReceive(IAsyncResult ar)
{
Socket socket = (Socket)ar.AsyncState;
EndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
int bytesRead = socket.EndReceiveFrom(ar, ref remoteEP);
string message = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Received message: " + message + " on port " + ((IPEndPoint)socket.LocalEndPoint).Port);
// 继续异步接收数据
socket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref remoteEP, new AsyncCallback(OnReceive), socket);
}
}
```
在这个示例中,我们创建了两个 Socket 对象,分别绑定到端口号为 1234 和 5678 上。然后,在每个 Socket 上异步接收数据,并在回调函数中打印接收到的消息和端口号。注意,这里我们使用了 BeginReceiveFrom 和 EndReceiveFrom 方法来接收数据,这是因为我们需要在异步模式下接收数据,以便我们能同时接收来自多个端口的数据。
你可以根据需要修改这个示例代码,以适应你的具体需求。
阅读全文