UdpClient.Send (바이트 배열) 또는 UdpClient.Client.Send (스트림) 메서드를 사용하여 UDP 프로토콜 전체에서 데이터를 보낼 수 있습니다. 두 가지 방법 모두 작동합니다. 유일한 차이점은 하나의 메서드에서 바이트 배열을 전달하고 다른 메서드에서는 스트림을 전달한다는 것입니다.UdpClient.Send 메서드와 UdpClient.Client.Send 메서드 간의 차이점
빠른 예 :
UdpClient udpClient = new UdpClient(localEndPoint);
// I can eather send data as:
udpClient.Send(new byte[] { 0, 1, 2 }, 3);
udpClient.Client.Send(new byte[5]);
또한 어떤 방법을 내 데이터가 정보를 잃지 않고 목적지에의 도달하도록 할 것인가? 나는 udp 프로토콜이 모든 바이트가 목적지에 도달하는 것을 보장하지 않는다는 것을 읽었습니다. 따라서 스트리밍 비디오, 오디오는 좋지만, 제가하고있는 것처럼 파일을 전송하는 것은 아닙니다. 내가 tcp 대신에 udp를 사용하는 이유는 라우터 뒤에있는 두 사용자간에 tcp 연결을 설정하는 것이 매우 복잡하기 때문입니다. 사용자 중 한 명이 라우터에서 포트 포워딩을 사용할 수 있다면 가능할 것입니다. 나는 udp punch holing이라고 불리는 것을함으로써 데이터를 보낼 수있었습니다. udp punch holing을 사용하면 서버를 사용하여 라우터 뒤에있는 두 명의 사용자간에 연결을 설정할 수 있습니다. Google에서이 정보를 사용하면 많은 정보를 찾을 수있는 방법에 대해 설명하는 것이 오래 걸릴 것입니다. 어쨌든 난 그냥 왜 대신 UDP를 사용하고 있었는지 알려주고 싶었다. 데이터가 손실되지 않도록이 프로토콜로 파일을 보낼 수 있다면 지금은 안됩니다. 어쩌면 내가 알고리즘을 만들어야 해. 또는 UdpClient.Client.Send 메서드를 사용하면 데이터를받을 수 있고 UdpClient.Send 메서드로 데이터를받을 수 있는지 확인할 수 있습니다.
나는 TCP를 사용할 수 있으면 좋겠다. 나는 NAT 뒤에 두 사용자 사이의 TCP 연결을 설정할 수 없었습니다.나는 서버의 도움으로 udp punch holing을함으로써 udp로 그렇게 할 수 있었다. 어쩌면 나는 ftp와 같은 다른 프로토콜로 구멍 뚫기를 할 수있다. 내가 udp로하고 싶은 이유는 라우터에서 포트 포워딩을 사용하지 않고도 NAT를 통해 두 피어를 연결할 수있는 유일한 프로토콜이기 때문입니다. –