用udp写个服务器怎么获取客户端的ipep?

bluesands_zhang 2013-04-16 11:34:05
看了msdn中的代码,客户端的ip是人为指定的,而不能处理多个客户端的接入
是不是服务器客户端的程序服务器端只能用tcp连接,而不能用udp的无连接协议?
udp作为无连接的只能用于点对点的通信?



public static bool messageReceived = false;

public static void ReceiveCallback(IAsyncResult ar)
{
UdpClient u = (UdpClient)((UdpState)(ar.AsyncState)).u;
IPEndPoint e = (IPEndPoint)((UdpState)(ar.AsyncState)).e;

Byte[] receiveBytes = u.EndReceive(ar, ref e);
string receiveString = Encoding.ASCII.GetString(receiveBytes);

Console.WriteLine("Received: {0}", receiveString);
messageReceived = true;
}

public static void ReceiveMessages()
{
// Receive a message and write it to the console.
IPEndPoint e = new IPEndPoint(IPAddress.Any, listenPort);
UdpClient u = new UdpClient(e);

UdpState s = new UdpState();
s.e = e;
s.u = u;

Console.WriteLine("listening for messages");
u.BeginReceive(new AsyncCallback(ReceiveCallback), s);

// Do some work while we wait for a message. For this example,
// we'll just sleep
while (!messageReceived)
{
Thread.Sleep(100);
}
}
...全文
63 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gxingmin 2013-04-16
  • 打赏
  • 举报
回复
internal void OnDataReceived(IAsyncResult ar) { try { Socket udpSocket = ar.AsyncState as Socket; int bytesRecved = udpSocket.EndReceiveFrom(ar, ref remoteEP); string ip=remoteEP.split(':')[0]; //对方ip string port=remoteEP.split(':')[1];//对方端口 ...

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧