日期:2014-05-17  浏览次数:20971 次

UDP 通讯中 接收byte的时候停止了!!
void ReceiveMessage()
  {
  //UdpClientB = new UdpClient(portclient); //B开启的端口号 
  //remotePoint = new IPEndPoint(IPAddress.Any, 0);
  int recv;
  byte[] bytes = new byte[1024];  
 
  IPEndPoint ipt = new IPEndPoint(IPAddress.Any, 13000);
  Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  server.Bind(ipt);
 
  while (true)
  {
  try
  {
  IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
  EndPoint Remote = (EndPoint)(sender);
  recv = server.ReceiveFrom(bytes, ref Remote);
 
  MessagePP com = (MessagePP)DeserializeObject(bytes);
  if (com.command == 0)
  {
  ReceivedACK = true;
  }
  else
  {
  //收的都是图片了
  MessageBox.Show("B已经收到了A发来的图片消息了");
  }
 
  }
  catch
  {
 
  }
  }
  }


单步调试,到了红色的那行代码处,没有继续往下运行了.....求助...正在弄UDP打洞,这个为Client,监听着自己这边的一个端口,然后要得到其他Client发过来的数据

------解决方案--------------------
你的AB在同一局域网内吗?对于两个客户端处于同一局域网内的情况,因为有的路由器不支持局域网内部访问其公网地址的回环,需要用本地地址访问本地客户端。所以打洞的时候,往往要发送本地地址到中转服务器,服务器将客户端的本地地址和外网地址都发送给另一个客户端,两个客户端分别通过对方的公网地址和本地地址打洞,来解决两个客户端处于同一局域网内的问题。