소켓프로그래밍 소스 및 상세분석자료
닫기
  • 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
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
해당 자료는 10페이지 까지만 미리보기를 제공합니다.
10페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

소켓프로그래밍 소스 및 상세분석자료에 대한 보고서 자료입니다.

본문내용

dateWindow(hwnd);
 
while(TRUE)
{
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
if (gSid!=INVALID_SOCKET)
{
int iError;
TimeVal tv={0L,0L};
SockAddrIn from;
FdSet rfds;
int fromlen=sizeof(from);
FD_ZERO(&rfds);
FD_SET(gSid,&rfds);
iError=select(32,&rfds,NULL,NULL,&tv);
if (iError==SOCKET_ERROR)
{
wsprintf(gszMsg,\"select Error!,error no=%d\",WSAGetLastError());
MessageBox(hwnd,gszMsg,\"Error\",MB_OK);
gSid=INVALID_SOCKET;
}
else if (FD_ISSET(gSid,(FdSet FAR *)&rfds))
{
int iRecvCnt;
 
glpszBuf=(LPTSTR)malloc(MAX_LEN);
iRecvCnt=recv(gSid,(char FAR *)glpszBuf,MAX_LEN-1,MSG_PEEK);
if (iRecvCnt==SOCKET_ERROR)
{
wsprintf(gszMsg,\"recv Error!,error no=%d\",WSAGetLastError());
MessageBox(hwnd,gszMsg,\"Error\",MB_OK);
gSid=INVALID_SOCKET;
}
else
{
glpszBuf[iRecvCnt]=\'\\0\';
InvalidateRect(hwnd,NULL,TRUE);
UpdateWindow(hwnd);
}
}
}
}
}
 
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
HANDLE_MSG(hwnd,WM_CREATE,OnCreate);
HANDLE_MSG(hwnd,WM_PAINT,OnPaint);
HANDLE_MSG(hwnd,WM_SETFOCUS,OnSetfocus);
HANDLE_MSG(hwnd,WM_SIZE,OnSize);
HANDLE_MSG(hwnd,WM_DESTROY,OnDestroy);
}
 
return DefWindowProc(hwnd,msg,wParam,lParam);
}
BOOL OnCreate(HWND hwnd,LPCREATESTRUCT lpCS)
{
gHwndList=CreateWindow(\"ListBox\",NULL,WS_CHILD|WS_VISIBLE,0,0,0,0,hwnd,NULL,GetWindowLong(hwnd,GWL_HINSTANCE),NULL);
if (WSAStartup(0x101,&gWsaData)!=0)
{
wsprintf(gszMsg,\"WSAStartup Error!\");
MessageBox(hwnd,gszMsg,\"Error\",MB_OK);
 
return FALSE;
}
gSid=socket(AF_INET,SOCK_STREAM,0);
if (gSid==INVALID_SOCKET)
{
wsprintf(gszMsg,\"socket Error!,error no=%d\",WSAGetLastError());
MessageBox(hwnd,gszMsg,\"Error\",MB_OK);
 
return FALSE;
}
gsaddr.sin_family=AF_INET;
gsaddr.sin_addr.s_addr=htonl(INADDR_ANY);
gsaddr.sin_port=htons(PORT_NUM);
if (bind(gSid,(SockAddr FAR *)&gsaddr,sizeof(gsaddr))==SOCKET_ERROR)
{
wsprintf(gszMsg,\"bind Error!,errno=%d\",WSAGetLastError());
MessageBox(hwnd,gszMsg,\"Error\",MB_OK);
}
 
return TRUE;
}
void OnSetfocus(HWND hwnd,HWND hwndOldFocus)
{
SetFocus(hwnd);
}
void OnSize(HWND hwnd, UINT state, int cx, int cy)
{
MoveWindow(gHwndList,0,0,cx,cy,TRUE);
}
void OnDestroy(HWND hwnd)
{
if (gSid!=INVALID_SOCKET) closesocket(gSid);
WSACleanup();
PostQuitMessage(0);
}
void OnPaint(HWND hwnd)
{
HDC hdc;
PAINTSTRUCT ps;
 
hdc=BeginPaint(hwnd,&ps);
EndPaint(hwnd,&ps);
if (glpszBuf!=NULL) ListBox_AddItemData(gHwndList,glpszBuf);
}
 
 
 
API 로만 보는 소켓 프로그래밍#1(블록화 함수)
 
소켓 프로그램밍은 상당히 어렵다고 생각하기는 쉽지만 이것은 아마 소켓 프로그래밍에
대한 자료가 적기 때문일 것이다.사실 소켓 프로그래밍은 TCP/IP에대한 어느정도의
이해가 요구되고 또한 알아야할 함수나 많다.또한 소켓 프로그래밍은 네트워크가
돌아가야하는 관계로 개인이 집에서 실습해보기는 사실상 어렵다.
그래서 소켓 프로그래밍이 어렵게 느껴지는 것일뿐이라고 생각한다.
예전에는 TCP/IP는 윈도우에서 직접 지원을 해주지를 않았다.따라서 예전 윈도우 3.1
시대에는 트럼펫 윈속이나 기타 등등의 윈속을 먼저 실행시켜주어야만 했으나
윈도우 95시대에서는 TCP/IP 나 UDP등을 직접 지원해주기 때문에 트럼펫 윈속 등을
뛰워줄필요가 없다.따라서 이제는 사용자는 직접 윈속을 뛰우고 다시 익스플로러등을
뛰우는 것이 아닌직접 익스플로러만 돌리면 되게 되었다.
또한 지금도 거의 그렇지만 앞으로의 모든 프로그램에는 네트워킹 기능이 옵션이 아닌
필수가 될것이 거의 확실하다고 생각한다.
(참고로 돈벌기 위해서는 방법은 네트워킹은 필수가
  • 가격3,000
  • 페이지수55페이지
  • 등록일2010.04.26
  • 저작시기2005.6
  • 파일형식한글(hwp)
  • 자료번호#603043
본 자료는 최근 2주간 다운받은 회원이 없습니다.
다운로드 장바구니