1台服务器与多台客户端网络通信,如何接收并处理多台客户端发送过来的数据包。
我开启了监听,已获取发送方的IP和PORT。
问题是我如何建立SOCKET来与多个发送方进行数据通信,要建立多个ClientUdp感觉不是很好。另外就是多个客户端会同时发送大量的数据到服务器,该如何处理好些,如果每次一接到包就创建一个连接来进行通信那也太频繁了。
刚接触网络通信这块,还望大虾们不吝赐教!!!
static IPEndPoint lp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 11111);
UdpClient udpClient = new UdpClient(lp);//本地监听
private void get()
{
Thread td = new Thread(new ThreadStart(listen));
td.IsBackground = true;
td.Start();
}
///<summary>
/// 监听并处理接收到的数据包
///</summary>
private void listen()
{
try
{
Thread.Sleep(1000);
IPEndPoint ep = new IPEndPoint(IPAddress.Any, 11111);
byte[] recvBuf = udpClient.Receive(ref ep);
dataManager(recvBuf, ep);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
get();
}
ClientUdp ClientUDP = null;
private void dataManager(byte[] buf, IPEndPoint ep)
{
try
{
if(ClientUDP!=null)
{
ClientUDP=null;
}
string receiveContent = Encoding.ASCII.GetString(buf).Replace("\0", "");
string[] array1 = receiveContent.Split('/');
string ip = ep.Address.ToString();
int port = ep.Port;
log.Warn(ip+":"+port.ToString()+receiveContent);
//这个地方的处理很不好,但不知道要如何去搞
ClientUDP=new ClientUdp();
ClientUDP.Create(1024);
ClientUDP.Connect(ip,port);
messageManager(ClientUDP,array1[2]);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void messageManager(ClientUdp udp, string str)
{
if (str == "001")
{
udp.Send("6/5/1:");
}
else if (str == "002")
{
udp.Send("6/5/2:");
}
}
这个就是基本的socket通信吧
C#游戏服务器MMRPG交流群:136485198