|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6365 [º¹»ç]
¾È³çÇϼ¼¿ä
TCP/IP·Î ÇÁ·Î±×·¥ ¸¸µé´Ù°¡ Àß ¾ÈµÇ´Â ºÎºÐÀÌ ÀÖ¾î¼ Áú¹®µå¸³´Ï´Ù.
Àú´Â C¾ð¾î·Î ±¸ÇöÇÏ·Á°í ÇÕ´Ï´Ù.
Á¦°¡ ÇÑ ÇÁ·Î±×·¥ÀÌ ¼¹ö¿Í Ŭ¶óÀÌ¾ðÆ® ¿ªÇÒÀ» ÇÏ´Â Äڵ带 ±¸Çö ÇØ¾ßÇϴµ¥¿ä
ÄÚµå¼ø¼
/*
client ¼ÒÄÏ º¯¼ö= hSocket
server ¼ÒÄÏ º¯¼ö= hServSock
µé¾î¿Ã client ¼ÒÄÏ º¯¼ö= hClntSock ¶ó°í ÇսôÙ.
*/
socket(hClntSock¿¡ ÆÄÀϵð½ºÅ©¸³ÅÍ ÇÒ´ç)-connect(´Ù¸¥ ÇÁ·Î±×·¥¿¡°Ô ¿¬°á ¿äû)-socket(hServSock¿¡ ÆÄÀϵð½ºÅ©¸³ÅÍ ÇÒ´ç)-bind(ÁÖ¼ÒÁ¤º¸ÇÒ´ç)-listen(´ë±â)-accept(Ŭ¶óÀÌ¾ðÆ® ¿¬°á ¿äû ¼ö¶ô)
ÀÌ·¸°Ô ±¸ÇöÇϸé, ¾ç¹æÇâÀ¸·Î
´Ù¸¥ ÇÁ·Î±×·¥1 -> Áö±Ý¼³¸íÇÑ ÇÁ·Î±×·¥ -> ´Ù¸¥ ÇÁ·Î±×·¥2
ÀÌ·¸°Ô µÇÁö ¾Ê³ª¿ä?
Ã¥¿¡¼´Â ÀÌ·¸°Ô ±¸ÇöµÈ´Ù°í º»ÀûÀÌ ÀÖ´Â °Å °°¾Æ¼ ±¸ÇöÇØ º¸¾Ò½À´Ï´Ù
¾Æ·¡´Â Á¦°¡ ±¸ÇöÇÑ ÄÚµåÀÔ´Ï´Ù.
±×·±µ¥ ¿À·ù°¡ ¹ß»ýÇϳ׿ä.
---------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <WinSock2.h>
#define BUF_SIZE 1024
int main(void)
{
WSADATA wsaData;
SOCKET hSocket, hServSock, hClntSock;
/*
client ¼ÒÄÏ º¯¼ö= hSocket
server ¼ÒÄÏ º¯¼ö= hServSock
µé¾î¿Ã client ¼ÒÄÏ º¯¼ö= hClntSock ¶ó°í ÇսôÙ.
*/
char message[BUF_SIZE];
int strLen;
SOCKADDR_IN servAdr, servAdrs, clntAdr;
int clntAdrSize;
if(WSAStartup(MAKEWORD(2, 2), &wsaData)!=0)
{
printf("¿¡·¯ ¸Þ¼¼Áö : ¶óÀ̺귯¸® ÃʱâÈ ½ÇÆÐ\n\n");
printf("Àá½ÃÈÄ ´Ù½Ã ½ÇÇàÇØÁÖ¼¼¿ä^^;;");
Sleep(5000);
exit(1);
}
hSocket=socket(PF_INET, SOCK_STREAM, 0);
if(hSocket==INVALID_SOCKET)
{
printf("¿¡·¯ ¸Þ¼¼Áö : ¼ÒÄÏ »ý¼º ½ÇÆÐ\n\n");
printf("Àá½ÃÈÄ ´Ù½Ã ½ÇÇàÇØÁÖ¼¼¿ä^^;;");
Sleep(5000);
exit(1);
}
memset(&servAdr, 0, sizeof(servAdr));
servAdr.sin_family=AF_INET;
servAdr.sin_addr.s_addr=inet_addr("127.0.0.1");
servAdr.sin_port=htons(atoi("9190"));
if(connect(hSocket, (SOCKADDR*)&servAdr, sizeof(servAdr))==SOCKET_ERROR)
{
printf("¿¡·¯ ¸Þ¼¼Áö : ¿¬°á ½ÇÆÐ\n\n");
printf("Àá½ÃÈÄ ´Ù½Ã ½ÇÇàÇØÁÖ¼¼¿ä^^;;");
Sleep(5000);
exit(1);
}
hServSock=socket(PF_INET, SOCK_STREAM, 0);
if(hServSock==INVALID_SOCKET)
{
printf("¿¡·¯ ¸Þ¼¼Áö : ¼ÒÄÏ »ý¼º ½ÇÆÐ\n\n");
printf("Àá½ÃÈÄ ´Ù½Ã ½ÇÇàÇØÁÖ¼¼¿ä^^;;");
Sleep(5000);
exit(1);
}
memset(&servAdrs, 0, sizeof(servAdrs));
servAdrs.sin_family=AF_INET;
servAdrs.sin_addr.s_addr=htonl(INADDR_ANY);
servAdrs.sin_port=htons(atoi("9190"));
if(bind(hServSock, (SOCKADDR*)&servAdrs, sizeof(servAdrs))==SOCKET_ERROR)
{
printf("¿¡·¯ ¸Þ¼¼Áö : ÁÖ¼Ò Á¤º¸ ÇÒ´ç ½ÇÆÐ\n\n");
printf("Àá½ÃÈÄ ´Ù½Ã ½ÇÇàÇØÁÖ¼¼¿ä^^;;");
Sleep(5000);
exit(1);
}
if(listen(hServSock, 5)==SOCKET_ERROR)
{
printf("¿¡·¯ ¸Þ¼¼Áö : ¿¬°á ¿äû ´ë±â ½ÇÆÐ\n\n");
printf("Àá½ÃÈÄ ´Ù½Ã ½ÇÇàÇØÁÖ¼¼¿ä^^;;");
Sleep(5000);
exit(1);
}
clntAdrSize=sizeof(clntAdr);
hClntSock=accept(hServSock, (SOCKADDR*)&clntAdr, &clntAdrSize);
if(hClntSock==-1)
{
printf("¿¡·¯ ¸Þ¼¼Áö : Á¢¼Ó ½ÇÆÐ\n\n");
printf("Àá½ÃÈÄ ´Ù½Ã ½ÇÇàÇØÁÖ¼¼¿ä^^;;");
Sleep(5000);
exit(1);
}
else
{
ÀÌ ºÎºÐÀº ³ªÁß¿¡ Á¦°¡ ÇÁ·Î±×·¥ ¿ëµµ¿¡ ¸Â°Ô ÄÚµùÇÒ°Å¿¹¿ä...¤¾
}
closesocket(hSocket);
closesocket(hServSock);
closesocket(hClntSock);
WSACleanup();
return 0;
}
---------------------------------------------------------------------------------------
¿Ö ¿À·ù°¡ ¶ß´Â°ÅÁҤФÐ
µµ¿ÍÁÖ¼¼¿ä.
|
Hit : 8456 Date : 2013/07/13 03:37
|