[Socket网络编程] Socket网络编程之echo服务器

Socket网络编程之echo服务器

这是Windows下的Socket编程例程:

CMakeLists.txt

#CMakeLists.txt
cmake_minimum_required(VERSION 3.0)

project(select)

link_libraries(ws2_32)

FILE(GLOB SC *.cpp *.h)

add_executable(${PROJECT_NAME} ${SC})

main.cpp

/*main.cpp*/
#include <Windows.h>
#include <iostream>
using namespace std;

#define BUFSIZE 4096

int main(int argc, char** argv)
{
	WSAData wsa;
	WSAStartup(0x020, &wsa);

	SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);

	struct sockaddr_in _server;
	_server.sin_family = AF_INET;
	_server.sin_addr.s_addr = inet_addr("127.0.0.1");
	_server.sin_port = htons(3000);

	int ret = bind(sock, (sockaddr*)&_server, sizeof(_server));
	ret = listen(sock, 200);

	
	struct sockaddr_in addrClt;
	int addrCltSize = sizeof(addrClt);

	static char buffer[BUFSIZE] = { 0 };
	static int _rlen = 0;

	while (true)
	{
		SOCKET _client = accept(sock, (sockaddr*)&addrClt, &addrCltSize);
		cout << "client have been accepted" << endl;

		_rlen = recv(_client, buffer, BUFSIZE, 0);
		cout << "recv(" << _rlen << "): " << buffer << endl;
		if (_rlen > 0)
		{
			send(_client, buffer, _rlen, 0);
			memset(buffer, 0x00, _rlen);
		}

		closesocket(_client);
	}

	WSACleanup();
	return 0;
}

posted @ 2021-03-14 15:37  dilex  阅读(132)  评论(0)    收藏  举报