|
TCP부분은 프로그램 할때 TCP자신이 알아서 해주는 부분이 많아서 좋지만 UDP부분은 인터넷 환경에 따라서 많은 부분이 변하고 특히 UDP프로토콜 자체가 신뢰성을 보장하지 않는다고 못 박고 있으므로 보이지 않는 에러가 발생 할수 있습니다.
제가 실력이 없어서 Builder는 모르겠고 주위에서 하도 버클리를 하라고 들쌀을 대서 버클리를 공부 했는데
대충 아래와 같습니다.
int s = socket(PF_INET,SOCK_DGRAM,0);
struct sockaddr_in address;
int len = sizeof(address);
char msg[100] = "my message";
address.sin_family = AF_INET;
address.sin_addrs.s_addr = htonl(INADDR_ANY);//INADDR_ANY대신 상대방 32비트ip주소로...
//'112.234.1.2'가아닌 32비트 IP주소를 입력
address.sin_port = htons(1024);;//1024 - 5000사이 값으로 아무거나
sendto(s,msg,strlen(msg),0,(struct sockaddr*)&address,len);
close(s);
대충 이렇습니다.
데이타를 받을 땐 recvfrom을 사용하면 됩니다. 사용법은 sendto와 같습니다. 단지 소켓 주소 구조체(address)에 보낼때에와는 다르게 자료를 채울 필요가 없습니다. UDP가 알아서 기록 해줍니다.
-의문점이 있으면 '컴퓨터 네트워크 프로그램' 을 참조 하세요
분량도 적고 내용도 착실하고 상당히 좋은 책입니다.
- 저자는 '김화종'
- '홍릉 과학 출판사'입니다.
꼭 UDP프로그램을 하실려면 소켓 프로그램에 대해서 공부하세요 안그러면 TCP로 하시던가요
UDP가 신뢰성있는 데이타 전송을 보장하지 않기 때문에 안그러면 보이지 않는 에러로 고생 하실겁니다.
그럼
김준원 님이 쓰신 글 :
: indy UDP 관련 소스 부탁드립니다. indy 9 (C++ Builder로 되어있는걸로요 ;ㅅ;)
:
: TCP 소스를 보면서 분석을 해봐도 도통 전혀 도움이 안되더군요....
:
: UDP를 통해서 간단히 작은 데이터(문자라던지 숫자)를 전송하고 수신받는
:
: UDP 클라이언트와 서버의 예제를 부탁드립니다.
:
: 이전글들 보면 어떤분이 가지고 계신다고 하시던데...
:
: member 내용이 어떻게들 되는건지 영 ㅡㅡ;;;
:
: 값을 어떻게 넣고 어떻게 받는것인지 간단한 소스파일 급히 부탁드립니다 ;ㅅ;
:
: -MS의 Visual C++ 하다가 갑자기 Borland의 세상으로 건너뛰어온 바보가...-
|