C# udp 통신 관련하여 byte[] 크기

안녕하세요 C# 를 독학중인 학생입니다.

최근 UDP 를 활용하여 pc간 이미지 전송하는 프로그램으 만드는중입니다.

서버에서 클라이언트로 이미지를 byte로 변환하여 클라이언트로 보낼때 byte 최대크기가 초과 되엇다고 합니다. 이 부분을 어떻게 수정을 해야할지 감이 안잡힙니다…

많이 부족하지만 아래는 제가 짠 코드입니다…

{
UdpClient cli_2 = new UdpClient();
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(“0.0.0.0”), 6262);

byte[] datagram_2 = ImageToByteArray(this.pictureBox1.Image);

string ledata_2 = datagram_2.Length.ToString();
byte[] data_2 = Encoding.UTF8.GetBytes(ledata_2);

cli_2.Send(datagram_2 , datagram_2 .Length, “0.0.0.0”, 6666);

cli_2.Send(data_2, data_2.Length, “0.0.0.0”, 6666);
}

굵은글씨 부분에서 에러가 나타나는중입니다…

1개의 좋아요

아래를 참조 해보세요
https://www.sysnet.pe.kr/2/0/13229

4개의 좋아요

UDP는 65535 바이트를 초과해서 전송할 수가 없습니다. 자체 프로토콜을 만들어서 큰 사이즈를 분할해서 보내는 방법이 있긴합니다만 UDP 특성상 중간에 패킷이 빠지는 경우가 생길 수가 있습니다.
그런데 이미지를 전송하려면 UDP보다 TCP가 더 나아보입니다. 프로토콜은 대략 간단하게 아래와 같이 하면 될거같습니다.

페이로드 크기(4 또는 8바이트, 빅엔디안) + 페이로드 데이터

대략 위와 같이 프로토콜을 구상해서 송수신 하면 될것같습니다.
TCP와 UDP의 차이점은 아래 링크를 참조하시면 될것같습니다.

6개의 좋아요