Programming/Network Program

초간단 서버

고냥*^^* 2008. 5. 11. 23:51
반응형
#include "main.h"


int main()
{
  SOCKET      servSock, clntSock;
  WSADATA      wsaData;
  SOCKADDR_IN    servAddr, clntAddr;
  int        addrSize = 0;
  int        len = 0;
  unsigned long  flags;
  char      recvBuf[100];
  char      sendBuf;

  if(WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
  {
    puts("WSAStartup Err!!");
    return -1;
  }

  servSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  if(servSock == INVALID_SOCKET)
  {
    puts("Socket Err!!");
    WSACleanup();
    return -1;
  }

  memset(&servAddr, 0, sizeof(SOCKADDR_IN));
  servAddr.sin_family     = AF_INET;
  servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
  servAddr.sin_port     = htons(PORT);

  if(bind(servSock, (SOCKADDR*)&servAddr, sizeof(SOCKADDR_IN)) < 0)
  {
    puts("Bind Error!!");
    closesocket(servSock);
    WSACleanup();
    return -1;
  }

  if(listen(servSock, 5) < 0)
  {
    puts("Listen Error!!");
    closesocket(servSock);
    WSACleanup();
    return -1;
  }

  addrSize = sizeof(clntAddr);
  puts("Server Start waiting client!!");
  while(1)
  {
    clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &addrSize);
    memset(recvBuf, 0, sizeof(recvBuf));
    if(clntSock != INVALID_SOCKET)
    {
      puts("Accept one user!!");
      len = recv(clntSock, recvBuf, 17, 0);
      if(len > 0)
      {
        //처리...
      }
      else
        closesocket(clntSock);
    }
    else
      closesocket(clntSock);
  }

  closesocket(servSock);
  WSACleanup();

  return 0;
}
반응형