|
간단한 문제네요.
소켓을 UDP로 여셔서 그래요. ㅎㅎㅎ
telnet은 TCP 소켓을 사용합니다.
SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
요기에서 SOCK_DGRAM을 SOCK_STREAM으로 바꿔주시면 됩니다.
그냥 실수면 상관 없겠지만, TCP/UDP 개념이 확립되어 있지 않으시다면...
그것부터 익히시는 것을 추천드려요.
오징어 님이 쓰신 글 :
: 텔넷으로
:
: vrs.ngii.go.kr
: 포트번호 2101
:
: 로 접속을 해서요
:
: GET /INCH-SB-RTCM23 HTTP/1.1
: User-Agent: NTRIP GNSSInternetRadio/1.2.0
: Authorization: Basic adsfasdfsadfasdfasdf== (ID와 비밀번호 부분이므로 임시로 해주었음)
:
: 요렇게 쳐주면 어떠한 신호가 날라옵니다.
: 그런데 이것을 똑같이 네트워크로 구현을 하는데요.
: 응답이 오지 않아서 질문 드립니다,
:
: int retval;
:
: WSADATA wsa;
: if(WSAStartup(MAKEWORD(2,2), &wsa) != 0)
: return -1;
:
: SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);
:
: if(sock == INVALID_SOCKET) err_quit("socket()");
:
: SOCKADDR_IN serveraddr;
: serveraddr.sin_family = AF_INET;
: serveraddr.sin_port = htons(PORT);
: serveraddr.sin_addr.s_addr = inet_addr("vrs.ngii.go.kr");
:
: retval = connect(sock, (struct sockaddr *)&serveraddr,
: sizeof(serveraddr));
:
: if(retval == SOCKET_ERROR) err_quit("connect()");
:
: char buf[BUFSIZE+1];
:
: int len;
:
: while(1){
: ZeroMemory(buf, sizeof(buf));
:
: sprintf(buf,
: "GET /INCH-SB-RTCM23 HTTP/1.1\r\n"
: "User-Agent: NTRIP GNSSInternetRadio/1.2.0\r\n"
: "Authorization: Basic dfasfdasdfsadfasfd==\r\n"
: "\r\n");
:
: len = strlen(buf);
:
: if(strlen(buf) == 0)
: break;
:
: retval = send(sock, buf, strlen(buf), 0);
:
: if(retval == SOCKET_ERROR){
: err_display("send");
: break;
: }
:
: retval = recv(sock, buf, retval, 0);
:
: if(retval == SOCKET_ERROR){
: err_display("send()");
: break;
: }
:
: recv에서 계속 대기합니다. 도대체 뭐가 틀렸죠?
:
: 텔넷에서 명령어 날려주는 것이
:
: 그냥 버퍼에 똑같이 담아서 send 해주면 같은방식 아닌가요?
:
: 좀 다른가...ㅜㅜ 답변 부탁 드립니다...ㅜㅜ
|