日期:2014-05-18  浏览次数:20834 次

c# socket连接的问题
原来使用下面代码连接是没有问题的,但是对方端口从9811改为98111后,就在IPEndPoint IPEd = new ……这句出错,说98111对ToInt16太大,改为Convert.ToInt32还是提示错误,提示指定的参数已超出有效值范围 参数名:port。但98111没有超出Int32的范围,IPEndPoint的port参数也应该是接受Int32的,请问是什么原因,有什么办法解决?麻烦了!!!!
private void SockConnection()
  {
  try
  {
  sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
  sock.SendTimeout = 10000;
  sock.ReceiveTimeout = 10000;
  MessageBox.Show(Convert.ToInt32(global.BHport.ToString()).ToString());
  IPEndPoint IPEd = new IPEndPoint(IPAddress.Parse(global.BHip.ToString()),Convert.ToInt16(global.BHport.ToString()));
  sock.Connect(IPEd);
  }
  catch (Exception SConn)
  {
  MessageBox.Show(SConn.ToString(), "数据连接错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
  }
  }

------解决方案--------------------
端口数最大可以到65535,也就是Int16的最大值,你的98111是不行的!
------解决方案--------------------
計算機的端口就那么多了吧﹐還訪問什么65535以后的端口?