ホームに戻る
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;
}