Tôi có 2 chương trình, 1 chương trình để gửi tin nhắn phát sóng UDP và 1 chương trình đang nghe chương trình phát sóng này. Vấn đề của tôi là đôi khi tôi gửi một phát sóng, người nhận nhận được 2 tin nhắn. Tại sao?Gửi UDP phát sóng, nhận nhiều tin nhắn
đang Receiver: Mã
public class Receiver {
private readonly UdpClient udp = new UdpClient(15000);
private void StartListening()
{
this.udp.BeginReceive(Receive, new object());
}
private void Receive(IAsyncResult ar)
{
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 15000);
byte[] bytes = udp.EndReceive(ar, ref ip);
string message = Encoding.ASCII.GetString(bytes);
StartListening();
}
}
Tên người gửi:
public class Sender {
public void Send() {
UdpClient client = new UdpClient();
IPEndPoint ip = new IPEndPoint(IPAddress.Broadcast, 15000);
byte[] bytes = Encoding.ASCII.GetBytes("Foo");
client.Send(bytes, bytes.Length, ip);
client.Close();
}
}
hi. Tôi muốn sử dụng mã của bạn để chuyển tệp UDP. nhưng tôi không biết phải làm gì với phần Nhận! làm thế nào nó nên được thực hiện? làm thế nào nó sẽ bắt đầu nhận được công cụ từ mạng? – Shamim
@Shamim, có rất nhiều tài nguyên trên web, một chút googling sẽ giúp ích. Tìm các ví dụ về máy khách/máy khách. –
'IPEndPoint ip = new IPEndPoint (IPAddress.Any, 15000);' chỉ có thể là 'IPEndPoint ip = null;' - nó không phải là một cấu trúc. Việc sử dụng nó trong phương thức 'EndReceive()' là định nghĩa người gửi. Populating nó với bất cứ điều gì ở tất cả là một chút gây hiểu lầm. – maxp