문제

C#에서 udpclient.send () 메소드를 사용하려면 보내는 바이트 수를 매개 변수 중 하나로 제공해야합니다.

보내기 전에 데이터 그램의 바이트 수를 어떻게 계산합니까?

도움이 되었습니까?

해결책

udpclient.send () 배열 배열 (바이트 []), 정수 크기 및 ipendpoint를 전달합니다. 데이터 그램의 페이로드로서 전체 바이트 배열을 전송하는 경우 더 이상 아무것도 없습니다. 데이터 그램의 페이로드로 배열의 길이 속성을 다음과 같이 사용할 수 있습니다.

UdpClient udpClient = new UdpClient();
IPAddress ipAddress = Dns.Resolve("www.contoso.com").AddressList[0];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 11004);    

Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");
try{
    udpClient.Send(sendBytes, sendBytes.Length, ipEndPoint);
}
catch ( Exception e ){
    Console.WriteLine(e.ToString());    
}

아마도 여기서 혼란은 당신이 와이어 위로 발송 될 비트의 수를 계산해야한다고 생각한다는 것입니다. 실제로 필요한 것은 페이로드의 크기입니다 (이 데이터 그램에서 실제로 보내려는 제공된 바이트 배열의 일부). 도서관은 나머지를 할 것입니다.

예와 정보 여기.

다른 팁

이 UDP 클라이언트를 부과하기 위해 어떤 언어를 사용하고 있는지 확실하지 않습니다. C ++에서 연산자 크기는 바이트 수를 제공합니다. 다른 접근법은 strlen () 또는 해당 유니 코드 변형을 사용하고 데이터 유형 크기를 곱하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top