2008년 05월 15일
[winsock 초보 프로그래밍] 07 상대방의 IP어드레스 취득
출처 : http://wwwi.tistory.com/66
서버가 클라이언트의 접속을 기다리다가 클라이언트가 접속 되었을때
어느 클라이언트가 접속 했는지 알아야 할때가 있다.
accept가 되어지면 accept함수의 두번째 파라미터에 상대방에 대한 정보가 저장되어진다.
예제는 accept한 상대방의 IP어드레스와 포트를 표시한다.
(IP어드레스는 문제없이 가져오는데 포트를 제대로 못가져온다. -.-;;; )
(왜 이상한 포트 번호가 넘어오는지 모르겠다. -.-????? )
#include <winsock2.h>
#include <stdio.h>
int main()
{
WSADATA wsaData;
SOCKET sockSvr;
SOCKET sockSS;
int nlen;
struct sockaddr_in addrSockSvr;
struct sockaddr_in addrSockclt;
// 윈속 초기화
WSAStartup(MAKEWORD(2, 0), &wsaData);
// 소켓 만들기
sockSvr = socket(AF_INET, SOCK_STREAM, 0);
// 소켓 설정
addrSockSvr.sin_family = AF_INET;
addrSockSvr.sin_port = htons(333);
addrSockSvr.sin_addr.S_un.S_addr = INADDR_ANY;
bind(sockSvr, (struct sockaddr *)&addrSockSvr, sizeof(addrSockSvr));
// TCP클라이언트로 부터 접속 요구를 대기
listen(sockSvr, 5);
while (1) {
// TCP클라이언트로 부터 접속 요구 받기\tab
nlen = sizeof(addrSockclt);
sockSS = accept(sockSvr, (struct sockaddr *)&addrSockclt, &nlen);
// 문자송신
printf("%s 로부터 접속 (포트번호:%d)\n",
inet_ntoa(addrSockclt.sin_addr), // IP어드레스
ntohs(addrSockclt.sin_port)); // 포트번호
send(sockSS, "안녕", 5, 0);
closesocket(sockSS);
}
// 윈속 종료
WSACleanup();
return 0;
}
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- ftp 작동 모드 by visu4l
- 5/8일 어버이날 by DoubleS
- 15 by 지영민
- 10주차 오늘은 무엇을 쓸까나.. 쓸만한게 없네 -_-;; by 막장로또
- Request Header by 산인
# by | 2008/05/15 02:20 | Network Prog | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]