溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Window/Linux下的Socket Server代碼

發布時間:2021-10-14 09:34:11 來源:億速云 閱讀:170 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關Window/Linux下的Socket Server代碼,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

Windows下

一、代碼

#include <iostream>
#include <WinSock2.h>
using namespace std;

#pragma comment(lib,"Ws2_32.lib")

void main()
{
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;

	wVersionRequested = MAKEWORD(2, 2);

	err = WSAStartup(wVersionRequested, &wsaData);
	if (err != 0) 
	{
		printf("WSAStartup failed with error: %d\n", err);
		return;
	}

	if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
	{
		printf("Could not find a usable version of Winsock.dll\n");
		WSACleanup();
		return;
	}
	else
		printf("The Winsock 2.2 dll was found okay\n");

	//
	SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);

	SOCKADDR_IN addrSrv;
	addrSrv.sin_family = AF_INET;
	addrSrv.sin_port = htons(80);
	addrSrv.sin_addr.S_un.S_addr = htonl(ADDR_ANY);
	bind(sockSrv, (SOCKADDR*)&addrSrv, sizeof(addrSrv));

	listen(sockSrv, 5);

	SOCKADDR_IN addrConn;
	int len = sizeof(addrConn);

	int n = 0;
	while(1)
	{
		//
		SOCKET sockConn = accept(sockSrv, (SOCKADDR*)&addrConn, &len);

		cout<<"ip:"<<inet_ntoa(addrConn.sin_addr)<<", port:"<<addrConn.sin_port<<endl;

		//
		char buf[1024] = {0};
		recv(sockConn, buf, 1024, 0);
		cout<<"server recv:"<<endl<<buf<<endl<<endl;

		//
		char send_buf[100] = {0};
		sprintf(send_buf, "%s%d", "yes.", n);
		n++;
		cout<<"000000000000n:"<<n<<", send_buf:"<<send_buf<<endl;

		int ret = send(sockConn, send_buf, strlen(send_buf), 0);
		cout<<"ret:"<<ret<<endl<<endl;

		//shutdown(sockConn, SD_BOTH);

		closesocket(sockConn);
	}

	closesocket(sockSrv);

}

二、運行

2.1 運行

      1. 運行上述代碼。

      2. 在瀏覽器中訪問127.0.0.1

2.2 結果

Window/Linux下的Socket Server代碼

Window/Linux下的Socket Server代碼

Linux下

一、代碼

#include <iostream>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>

using namespace std;

int main(int argc, char* argv[])
{
	int sock_srv = socket(AF_INET, SOCK_STREAM, 0);

	struct sockaddr_in addr_srv;
	bzero(&addr_srv, sizeof(struct sockaddr_in));
	addr_srv.sin_addr.s_addr = htonl(INADDR_ANY);
	addr_srv.sin_family = AF_INET;
	addr_srv.sin_port = htons(81);
	bind(sock_srv, (struct sockaddr*)&addr_srv, sizeof(struct sockaddr));

	listen(sock_srv, 5);

	struct sockaddr_in addr_conn;
	socklen_t len = sizeof(struct sockaddr_in);

	while(1)
	{
		int sock_conn = accept(sock_srv, (struct sockaddr*)&addr_conn, &len);

		cout<<"ip:"<<inet_ntoa(addr_conn.sin_addr)<<", port:"<<addr_conn.sin_port<<endl;

		char buf[1024] = {0};
		read(sock_conn, buf, 1024);
		cout<<"server recv:"<<endl<<buf<<endl<<endl;

		write(sock_conn, "yes", strlen("yes"));

		shutdown(sock_conn, SHUT_RDWR);

		close(sock_conn);
	}

	close(sock_srv);

	return 0;
}

二、運行

2.1 運行

      1. 編譯上述代碼生成test,執行./test。

      2. 在瀏覽器中訪問202.85.220.123:81。

2.2 結果

Window/Linux下的Socket Server代碼

Window/Linux下的Socket Server代碼

以上就是Window/Linux下的Socket Server代碼,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女