答案是自己给自己发一个消息,随便什么内容。
Console.WriteLine("等待连接...");
byte[] bytes = listener.Receive(ref RemoteIpEndPoint);
UdpClient udpClient = new UdpClient(4444);
udpClient.Connect("127.0.0.1", 8888);
string msg = "1";
Byte[] bytes = Encoding.ASCII.GetBytes(msg);
udpClient.Send(bytes, bytes.Length);
在使用
UDP
接收信息的时候,经常会遇到要持续接收的情况,基本上是用死循环的模式来做这个事情,但是如果持续接收不到消息该怎么办,那程序就
阻塞
了,一直在等待状态
C#
在创建Socket的时候是可以设置超时的
超时 会报异常
处理就好了
这行代码进行设置:
sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Re
ceive
Timeout, StopTime);
public static void
Udp
Re
ceive
(in
所以当分段获取时,单次获取后Available缓冲区在瞬时会变成0,在通过字节判断(大于0)的if条件后,又获取到了剩余字节数,在调试时会产生if(false)进入代码块情况。长字节数据判定,需要进行数据接收
结束
次数(Available等于0)统计,累计到一定次数才判断为接收完成。另外不要忘了超时判断,避免程序卡死。接收数据超过2000字节,re
ceive
单次最多获取1300+字节。
程序A,绑定192.168.100.1(本机地址)的8000端口,向192.168.100.1(本机地址)的9000端口发消息。
程序B,绑定192.168.100.1的9000端口,向192.168.100.1的8000端口发消息。
A和B均开始运行,可以互相发送消息(多线程或者单线程),运行正常!符合预期!
A运行,但B不运行,则A在Re
ceive
Fr
如何
结束
阻塞
状态的线程(会引起
结束
程序后进程还在)<br />vc/mfc2009-02-07 16:30:26阅读109评论0 字号:大中小 订阅<br />如果一个线程由于等待某些事件的发生而被
阻塞
,又该如何实现该线程的中断呢?比如当一个线程由于需要等候键盘输入而被
阻塞
,处于不可运行状态时,即使主程序中将该线程的共享变量设置为true,但该线程此时根本无法检查循环标志,当然也就无法立即中断。<br />其实,这种情况经常会发生,比如调用Thread.join()
方法
,或者Thread.slee
需要知道 接收方的ip 和 接收方开放的端口(port) ip =接收方的ip ,port = 接收方开放的端口 接收方:
不需要知道 发送方的ip 和 发送方的开放的端口,
只需要 监听一个 已经开放...