UDPCLIENT +线程

qhg103 2008-07-15 10:14:49
我有个服务端发送数据
客户端有个线程在监听
listener = new Thread(new ThreadStart(this.Listen ));

private void Listen()
{

IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0);
byte[] buffer;

try
{
while(isOpen && udpClient != null)
{


buffer = udpClient.Receive(ref remoteEndPoint);
MsgBuffer msgBuffer = new MsgBuffer();
msgBuffer.Buffer = buffer;
msgBuffer.SourceIP = remoteEndPoint.Address.ToString();

Monitor.Enter(msgQueue);
msgQueue.Enqueue(msgBuffer);
Monitor.Exit(msgQueue);

msgCount ++;
MessageItem msgItem = Unserialize(buffer);
if(null == msgItem) continue;

}
}
catch(Exception ex)
{
Console.WriteLine (ex.ToString ());
}
finally
{
udpClient.Close();
}
}

当服务端发送2000个左右的字符时,可以监听到,代码跟踪可以进入listen,如果服务端发送2500个左右的字符时,不能监听,代码跟踪进不了listen


另外还有一个问题,就是 我客户端接受到数据后,要进行广播,跨网段时广播不了,
有谁能帮帮我,
我对通讯是新手,
分也不多,
先谢谢了
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
烈火焚身 2008-07-15
  • 打赏
  • 举报
回复
路过UP
csShooter 2008-07-15
  • 打赏
  • 举报
回复
路过UP
zlkingdom 2008-07-15
  • 打赏
  • 举报
回复
发送字符的问题应该是你的缓存流空间开辟的不够大吧,如果够大的话应该是可以的
你说的跨网段进行通讯应该没问题啊,只要你知道IP地址就可以了
qhg103 2008-07-15
  • 打赏
  • 举报
回复
空间是没有限制,

我把广播地址设置为192.168.255.255,按理192.168下网都可以收到,
但是实际效果是收不到,
还有设置为255.255.255.255是除了自己所在网段可以接受到,其他的网段都收不到,这个应该是路由不转发的缘故

110,006

社区成员

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

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

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