服务端的初始化socket(也就是控制端):
void InitSocket()
{
remoteEndPointList = new List<EndPoint>();
//定义侦听端口,侦听任何IP
localIPEndPoint = new IPEndPoint(IPAddress.Parse(localIP), localport);
//定义套接字类型,在主线程中定义
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//服务端需要绑定ip
socket.Bind(localIPEndPoint);
//定义客户端
IPEndPoint remote = new IPEndPoint(IPAddress.Parse(DPIP), DPport);
remoteEndPointList.Add((EndPoint)remote);
IPEndPoint remote2 = new IPEndPoint(IPAddress.Parse(LIP), Lport);
remoteEndPointList.Add((EndPoint)remote2);
IPEndPoint remote3 = new IPEndPoint(IPAddress.Parse(RIP), Rport);
remoteEndPointList.Add((EndPoint)remote3);
//print("waiting for UDP dgram");
//开启一个线程连接,必须的,否则主线程卡死
Loom.RunAsync(() => {
connectThread = new Thread(SocketReceive);
connectThread.Start();
});
}
remoteEndPointList的长度取决于你要控制的机器数量。
客户端的初始化socket(被控制端):
void InitSocket()
{
//定义侦听端口,侦听任何IP
ipEnd = new IPEndPoint(IPAddress.Parse(ip), port);
//定义套接字类型,在主线程中定义
socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
//服务端需要绑定ip
socket.Bind(ipEnd);
//定义客户端
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
clientEnd = (EndPoint)sender;
//print("waiting for UDP dgram");
//开启一个线程连接,必须的,否则主线程卡死
Loom.RunAsync(() => {
connectThread = new Thread(new ThreadStart(SocketReceive));
connectThread.Start();
});
}