我用C#的socket写的一段通过网络发送和接收字符串的程序,其中接收的一段有问题,高人帮我看看吧,我用的是无连接的UDP和数据报套接字.....socket = new Socket( AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp );
socket.SetSocketOption( SocketOptionLevel.Socket,SocketOptionName.Broadcast,1 );
IPEndPoint local = new IPEndPoint(IPAddress.Any,0);
EndPoint localEP = (EndPoint)local; 
try
{
socket.Bind(localEP);
}
catch(SocketException ee)
{
         MessageBox.Show(ee.Message);
}
Thread thread = new Thread( new ThreadStart(readUdpSocket) );
thread.Start();....private void readUdpSocket()
{
     
while(true)
      {


try
{
if ( socket.Available > 0 )
{
charRcv = socket.ReceiveFrom(buffer,buffer.Length,SocketFlags.None,ref rcvSocketEP);
}
}
catch(SocketException e)
{
MessageBox.Show(e.Message);
}
bufferStr = buffer.ToString();
if ( String.Compare(bufferStr,0,"CHAT ",0,5) == 0 )
{
bufferStr.Substring( 5,charRcv - 4 );
rcvChatMessage(bufferStr);
}
//MessageBox.Show("2");
}

解决方案 »

  1.   

    没有出错信息,而是接收不到发送来的字符串,socket.Available 一直为0,接收执行代码就被饶过去了。说明我用的socket一直没工作呀,怎么回事呢?应该怎么写接收多路广播的无连接的数据报的socket呢?
      

  2.   

    程序运行的时候,readUdpSocket子函数中的socket总是接收不到数据,所以老是跳过判断语句而不执行,我用sniffer工具分析网络状态时是可以抓到数据包的,我的程序错在哪里呢?无连接的UDP和数据报套接字,并且接收节点是广播的这种情况应该怎么写呢?需要listen吗?还是bind的不对?高人帮忙呀
      

  3.   

    http://study.99net.net/study/program/net/1085471943.html