C# UDP始终在后台通过LAN侦听
我正在尝试通过局域网使用UDP,正如您在这里看到的,我用一台电脑向另一台电脑发送一个包,但是否可以在您仍在列表时发送包,因为当我开始接收时,进程停止响应。 我知道这与线程有关,但我需要一些帮助。 我感谢所有的帮助,提前谢谢C# UDP始终在后台通过LAN侦听,c#,udp,lan,C#,Udp,Lan,我正在尝试通过局域网使用UDP,正如您在这里看到的,我用一台电脑向另一台电脑发送一个包,但是否可以在您仍在列表时发送包,因为当我开始接收时,进程停止响应。 我知道这与线程有关,但我需要一些帮助。 我感谢所有的帮助,提前谢谢 UdpClient client = new UdpClient(); public void SendPacket() { byte[] packet = Encoding.ASCII.GetBytes(DateTime.Now.ToString("HH:mm:s
UdpClient client = new UdpClient();
public void SendPacket()
{
byte[] packet = Encoding.ASCII.GetBytes(DateTime.Now.ToString("HH:mm:ss:ff"));
client.Send(packet, packet.Length, tbIP.Text, 444);
dgvSend.Rows.Add(DateTime.Now.ToString("HH:mm:ss:ff"));
}
public void ReceivePacket()
{
client = new UdpClient(444);
IPEndPoint server = new IPEndPoint(IPAddress.Any, 0);
byte[] packet = client.Receive(ref server);
dgvReceiv.Rows.Add(Encoding.ASCII.GetString(packet), DateTime.Now.ToString("HH:mm:ss:ff"));
}
一旦你
收到
某样东西,你就需要启动另一个接收
,以便从其他人那里收到某样东西
如果希望接收多个连接,通常会使用异步IO。例如:
var client = new UdpClient(endPoint);
AsyncCallback callback = null;
callback = ar =>
{
IPEndPoint newIncomingEndPoint = endPoint;
byte[] data = client.EndReceive(ar, ref newIncomingEndPoint);
client.BeginReceive(callback, null);
// TODO: do something with data
};
client.BeginReceive(callback, null);
或者,如果您对不使用匿名方法的内容比较满意(来自):
如果不使用异步IO,在处理现有的
receive
时,您将无法接收另一个连接,因此您在时间上有一个巨大的缺口,想要连接的东西可能会被拒绝。一旦接收到东西,您就需要启动另一个接收
,以便从中接收到东西其他人
如果希望接收多个连接,通常会使用异步IO。例如:
var client = new UdpClient(endPoint);
AsyncCallback callback = null;
callback = ar =>
{
IPEndPoint newIncomingEndPoint = endPoint;
byte[] data = client.EndReceive(ar, ref newIncomingEndPoint);
client.BeginReceive(callback, null);
// TODO: do something with data
};
client.BeginReceive(callback, null);
或者,如果您对不使用匿名方法的内容比较满意(来自):
如果不使用异步IO,在处理现有的receive
时,您将无法接收另一个连接,因此您在时间上有一个巨大的差距,希望连接的内容可能会被拒绝。您好,我以前看过这段代码,但我仍然不太明白,因为您仍然需要等待接收内容才能发送。我的意思是边听边发。仅供参考,代码不完整,因为没有UdpState类,谢谢你,你不是真的听,你只是收到。使用Receive
您必须在接收之前发送,使用BeginReceive
您可以在向刚刚向您发送内容的人发送响应时启动另一次接收。您好,我以前见过此代码,但我仍然不太明白,因为您仍然需要等待接收内容才能发送。我的意思是边听边发。仅供参考,代码不完整,因为没有UdpState类,谢谢你,你不是真的听,你只是收到。使用Receive
您必须在接收之前发送,使用BeginReceive
您可以在向刚刚向您发送内容的人发送响应时启动另一次接收。