본문 바로가기

Windows Programming/Windows Socket

Windows Socket (Server)

윈도우 기반 서버 소켓 기본 코드 입니다.

#include <stdio.h>
#include <stdlib.h>
#include <WinSock2.h>
#include <WS2tcpip.h>
#pragma comment(lib, "ws2_32")

#define PORT 8088
#define MAXSIZE 256
#define PACKET_SIZE 1024

int main(int argc, char *argv[]) 
{

	WSADATA wsaData;
	SOCKET hListen;
	int nRecv = 0;

	char buf[MAXSIZE] = { 0, };
	WSAStartup(MAKEWORD(2, 2), &wsaData);

	hListen = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (hListen == -1) ErrorMsg("Socket Error!");

	SOCKADDR_IN listnAddr = { 0, };
	listnAddr.sin_family = AF_INET;
	listnAddr.sin_port = htons(PORT);
	listnAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

	if (bind(hListen, (SOCKADDR *)&listnAddr, sizeof(listnAddr)) == -1)
		printf("Bind() Error!");

	if (listen(hListen, SOMAXCONN) == -1) 
		printf("Listen() Error!");

	SOCKADDR_IN ClntAddr = { 0, };
	printf("Server Working....\n");
	int iClntSize = sizeof(ClntAddr);
	int i = 1;
	
	while (1) 
	{
		SOCKET hClient = accept(hListen, (SOCKADDR *)&ClntAddr, &iClntSize);
		if (hClient == -1)  
        	printf("Accept() Error!"); 
        //
		nRecv = recv(hClient, buf, PACKET_SIZE, 0);
		if (nRecv == -1) 
        	printf("Recv() Error!");
        //
		printf("Rev msg : %s \n", buf);
	}
    
	closesocket(hListen);
	WSACleanup();
	return 0;
}

'Windows Programming > Windows Socket' 카테고리의 다른 글

C언어 Echo Client (1:1통신)  (0) 2022.07.14
C언어 Echo Server (1:1 통신)  (0) 2022.07.14
Windows Socket (Client)  (0) 2022.01.11