|
udp에서 일부 놓칠수는 있지만 늘 놓치지는 않으므로 아예 안받는다면
그부분 소스를 zip파일로 압축해서 보여주세요
일부만 보고는 어디를 잘못짰는지 모르겟네여
이성제 님이 쓰신 글 :
: UDP 이기 때문에 그렇습니다.
:
: TCP와 UDP의 대표적인 차이점이죠.
:
: TCP는 방화벽이나 보안프로그램이 있어도 접속만 가능 하다면
:
: 매세지를 전송 하는데 문제가 되지 않죠.
:
: 하지만 UDP는 그냥 전송을 하기 때문에
:
: 전송 되는 중에 방화벽 이나 여러 장애 때문에 신호가 사라지거나 변환이 되는거죠.
:
: TCP와 UDP의 대표적인 차이 입니다. 미세한 차이점도 있긴 하지만 생략 하도록 하죠.
:
: 자세한건 직접 공부 하시는게 좋을듯 합니다.
:
:
:
: 금목암 님이 쓰신 글 :
: : 서버쪽 포트가 어떻게 설정되어있나요?
: : 인디에선 udp서버 /클라이언트를 쌍으로 양쪽에 놓고 주고 받을텐데요
: : ===============================================================
: :
: :
: : 현재 님이 쓰신 글 :
: : : Udp 소켓을 통해서 통신을 하는데요
: : : 이상하게 TUdpSocket 을 사용하게 되면
: : : UdpSocket1Receive 이벤트에서 서버측에서 보낸값을 받아야 되는데
: : : 받아지지않네요
: : :
: : : 클라이언트 측은
: : : 보낼때
: : : UdpSocket1->RemoteHost="서버측 아이피";
: : : UdpSocket1->RemotePort=9000;
: : : UdpSocket1->LocalHost = UdpSocket1->LocalHostName();
: : : UdpSocket1->LocalPort=1532;
: : : UdpSocket1->Open();
: : : UdpSocket1->Sendln("zzz");
: : :
: : : 서버측 코드는
: : : -.......
: : : cliLen = sizeof(cliAddr);
: : : n = recvfrom(sd, msg, MAX_MSG, 0,(struct sockaddr *) &cliAddr, &cliLen);
: : : sendto(sd,"yes",3, 0, (struct sockaddr *)&cliAddr, cliLen);
: : :
: : :
: : : if(n<0) {
: : : printf("%s: cannot receive data \n",argv[0]);
: : : continue;
: : : }
: : : ....
: : :
: : : 클라이언트에서 "zzz" 를 보내게 되면 서버측에서는 "zzz" 를 받아서 출력은 되는데요
: : : 다시 클라이언트로 "yes" 란 문자를 보내게 되는데요 클라이언트측의 UdpSocket1Receive 이벤트에서
: : : 받아야 되는데 받지를 못하던데요..
: : : 제가 잘못하고 있는것 같은데요
: : :
: : : TUdpSocket 을 사용하면 데이타를 받을때
: : : UdpSocket1Receive 에서 데이타가 받아지는것 맞죠..
: : : 죄송하지만 좀 자세한 설명좀 부탁좀드릴께요
|