'Programming/Network Program'에 해당되는 글 2건

  1. 2008.05.11 초간단 서버
  2. 2008.05.11 파싱 함수
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;
}
반응형
2008. 5. 11. 23:50

파싱 함수

반응형

#include "main.h"

int Recv_Msg(char* buf, char* msg[])
{
  char token[] = "|";
  char *tmp = NULL;
  int count = 0;
 
  msg[0]  =  strtok(buf, token);
  while  (msg[count] != NULL)
  {
    printf("token  =  %s\n", msg[count]);
    msg[++count]  =  strtok(NULL, token);
  }   
  return count;
}

반응형