ホームに戻る
 WinSock(Server)

#include <stdio.h>
#include <winsock2.h>

int initServerSock(SOCKET *sock0, int port){
  WSADATA wsaData;
  struct sockaddr_in addr;
  BOOL yes = 1;

  WSAStartup(MAKEWORD(2,0), &wsaData);

  *sock0 = socket(AF_INET, SOCK_STREAM, 0);

  if(*sock0 == INVALID_SOCKET){
    printf("socket : %d\n", WSAGetLastError());
    return 0;
  }

  addr.sin_family = AF_INET;
  addr.sin_port = htons(port);
  addr.sin_addr.S_un.S_addr = INADDR_ANY;

  setsockopt(*sock0, SOL_SOCKET, SO_REUSEADDR, (const char *)&yes, sizeof(yes));

  if(bind(*sock0, (struct sockaddr *)&addr, sizeof(addr)) != 0){
    return 0;
  }

  if(listen(*sock0, 5) != 0){
    return 0;
  }

  return 1;
}

int main()
{
  SOCKET sock0;
  SOCKET sock;
  int len;
  struct sockaddr_in client;

  char buf[2048];
  char inbuf[2048];

  initServerSock(&sock0, 12345);

  while(1){
    len = sizeof(client);
    sock = accept(sock0, (struct sockaddr *)&client, &len);
    if(sock == INVALID_SOCKET){
      break;
    }

    memset(inbuf, 0, sizeof(inbuf));
    recv(sock, inbuf, sizeof(inbuf), 0);

    sprintf(buf, "%s", "answer");

    send(sock, buf, (int)strlen(buf), 0);

    closesocket(sock);
  }

  closesocket(sock0);

  WSACleanup();

  return 0;
}


inserted by FC2 system