0
你好我得到這個代碼here收到一個多播地址C#的IP組播接收並保存多個包
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
Console.WriteLine("Ready to receive…");
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
EndPoint ep = (EndPoint)iep;
sock.Bind(iep);
sock.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership,
new MulticastOption(IPAddress.Parse("224.100.0.1")));
byte[] data = new byte[1024];
int recv = sock.ReceiveFrom(data, ref ep);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("received: {0} from: {1}", stringData, ep.ToString());
sock.Close();
現在,當我收到一包這個工程的數據,那麼sock.ReceiveFrom被觸發,但後即接收器關閉(即使我刪除了sock.Close行)。
我想要的是接收機顯示或保存我的數據,但繼續偵聽更多的數據包。
什麼是一個很好的方法來做到這一點?
因此,當使用while循環,我假設運行它在一個自己的線程,所以也許BeginReceive方法會更好地使用? – Gobliins
這取決於上下文。接收是一項阻止操作。當你必須同時做其他事情時,要麼跨越一個線程並使用阻塞while循環,要麼使用帶有「BeginReceive/EndReceipt」的異步編程模型 – Jan