0
을 저장 멀티 캐스트에서
안녕하세요 저는 패킷을받을 때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();
지금이 작동하는 멀티 캐스트 주소에 데이터를 수신 할 수 here에서이 코드는 다음 sock.ReceiveFrom가 트리거하지만 이후 있어요 수신기가 종료됩니다 (sock.Close 라인을 제거하더라도).
내가 원하는 것은 수신자가 데이터를 표시하거나 저장하지만 더 많은 패킷을 계속 수신한다는 것입니다.
이 작업을 수행하는 좋은 방법은 무엇입니까?
while 루프를 사용할 때 자체 스레드에서 실행한다고 가정하면 BeginReceive 메서드를 사용하는 것이 더 좋을까요? – Gobliins
컨텍스트에 따라 다릅니다. 수신은 차단 작업입니다. 그 동안 다른 일을해야 할 때 스레드를 확장하고 blocking while 루프를 사용하거나'BeginReceive/EndReceipt'를 사용하여 비동기 프로그래밍 모델을 사용하십시오. – Jan