我用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");
}
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");
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货