최근에 리버싱만해서 피폐해진 머리를 소켓 프로그래밍으로 옮겨서 연구 시작 !
프로그래밍 공부는 하고 싶은데, 책은 사기 싫고 . . . 그럴땐 역시 사랑스러운 MSDN 쨔응 !
http://msdn.microsoft.com/en-us/library/windows/desktop/ms738545(v=vs.85).aspx
자, 이렇게하면 된다. 외국어영역 5등급정도만 나와도 충분히 이해할 수 있는 글뿐(?)이다.
차근 차근 읽어보면
소켓 프로그래밍의 통신에는 크게 두가지로 분류되는 듯하고 내부 절차는 이러한듯 하다.
Server |
Client |
1. Initialize Winsock. 2. Create a socket. 3. Bind the socket. 4. Listen on the socket for a client. 5. Accept a connection from a client. 6. Receive and send data. 7. Disconnect.
|
1. Initialize Winsock. 2. Create a socket. 3. Connect to the server. 4. Send and receive data. 5. Disconnect. |
너무 쉽죠 ?
자, 이제 서버와 클라이언트의 소스를 작성해보자.
위 홈페이지를 들어가면 Client 와 Server 를 구축하는 간단한 예제 소스가 나와있다.
Server 부터 구축해야 Client를 시험해볼 수 있기 때문에 Server -> Client 순으로 구축하는걸 추천한다.
Server.cpp |
#include <Winsock2.h>
#pragma comment(lib,"Ws2_32.lib")
int main(void){
// WSA 초기화
// 소켓 생성
// 현재 컴퓨터의 IP 정보를 얻어옴
// 소켓 주소 생성
// 소켓 주소 생성 {
// socket 및 bind 확인. listen(s,SOMAXCONN); while ( cnt < 2 ){ do{ closesocket(s);
WSACleanup();
return 0;
|
Client.cpp |
#include <Winsock2.h> #pragma comment(lib,"Ws2_32.lib")
int main(void){
memset(&wsa,0,sizeof(wsa));
memset(&addr,0,sizeof(addr)); host = gethostbyname(NULL); getaddrinfo(lpIPString,lpPort,&addr,&paddr);
s = socket(paddr->ai_family,paddr->ai_socktype,paddr->ai_protocol);
connect(s,paddr->ai_addr,paddr->ai_addrlen); {
do{
shutdown(s, SD_SEND);
closesocket(s);
WSACleanup();
return 0; |
이런식으로 구축되지 않는가 !?
자, 그럼 이쯤에서 남자라면 한번씩 해보는 도전 !
인터넷을 접속하면 어떻게 될까 ?
조짐이 있어보인다 !
서버에서 다중연결을 원할 경우엔 accept 부터 thread 를 이용하여 적당히 뿌려주면 될 것같다 > < !!
조금 더 연구해서 한번 서버구축도 노려볼만할거 같음 ' ')b
( 인터넷 계층도 알아볼 필요가 있어보임 )
심심하니 fread, fwrite, fseek, ftell 구현. (Windows) (2) | 2012.10.21 |
---|---|
심심하니, 쓰레드에 대해 이야기해보자. (0) | 2012.10.10 |
Internet Explorer 도대체 임시 파일들은 어디에 ? (6) | 2012.09.26 |
새벽에 자려는데 떠오른 printf (2) | 2012.09.10 |
[Javascript] referrer 를 통한 웹사이트 접근 금지 (6) | 2011.10.15 |
|
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |