kik2401
September 7, 2023, 5:07am
1
안녕하세요 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 Like
스노우맨
September 7, 2023, 6:45am
3
UDP는 65535 바이트를 초과해서 전송할 수가 없습니다. 자체 프로토콜을 만들어서 큰 사이즈를 분할해서 보내는 방법이 있긴합니다만 UDP 특성상 중간에 패킷이 빠지는 경우가 생길 수가 있습니다.
그런데 이미지를 전송하려면 UDP보다 TCP가 더 나아보입니다. 프로토콜은 대략 간단하게 아래와 같이 하면 될거같습니다.
페이로드 크기(4 또는 8바이트, 빅엔디안) + 페이로드 데이터
대략 위와 같이 프로토콜을 구상해서 송수신 하면 될것같습니다.
TCP와 UDP의 차이점은 아래 링크를 참조하시면 될것같습니다.
tcp/ip와 udp/ip의 다른 점은? 소켓 통신 tcp/ip와 udp/ip를 학습을 통해 어떤 프로토콜인지는 알지만, 정확한 차이점과 특성을 모르면 잘못된 코딩을 하거나 실수하는 경우가 많습니다. 통신은 외부 업체와 협업하거나 장비를 이용해야 해서 어느 한쪽이 엉뚱하게 프로그램을 만들면 간단한 일도 힘든 작업이 될 수 있는데요, tcp/ip와 udp/ip의 차이점과 각 프로토콜을 사용했을 때의 주의해야 할 내용을 알아보겠습니다. 우선...
6 Likes