⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.cpp

📁 cplusplus socket programming ,easy , single connection
💻 CPP
字号:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <errno.h>#include <iostream.h>int main(){	// Create a socket 	cout << "To create socket" << endl;	int sock = socket(AF_INET, SOCK_STREAM, 0);    if (sock < 0) 	{ 		cout << "socket creation"; return -1; 	}	int port = 5010;	struct sockaddr_in sin;            //sin.sin_len = sizeof(sin);	sin.sin_family = AF_INET;	sin.sin_addr.s_addr = htonl(INADDR_ANY);	sin.sin_port = htons(port);            //bind sin to socket	cout << "To bind: " << sock << endl;	int rt1 = bind(sock, (sockaddr * )&sin, sizeof(sin));    if (rt1 < 0) 	{ 		cout << "********** Failed to bind: " << rt1 << endl;		return -1;	}            //listening to the port	cout << "Bind successful, to listen!" << endl;	int rt2 = listen(sock, 3);    if (rt2 < 0) 	{ 		cout << "*************Listening error!";	}	cout << "Listen success: " << rt2 << endl;	struct sockaddr_in cli_addr;    socklen_t clilen = sizeof(cli_addr);    memset((char *) &cli_addr, 0, sizeof(cli_addr));	cout << "To accept new connection" << endl;    int newSock = accept(sock, (struct sockaddr *) &cli_addr, &clilen);    if (newSock < 0)    {		cout << "********** Failed to accept: " << newSock << endl;        return 0;    }	cout << "Accepted a new sock: " << newSock << endl;	char buff[10000];	int len;	while (1)	{		len = 10000;		fd_set readFD;		FD_ZERO(&readFD);		// FD_SET(newSock, &readFD);		int ret = select(newSock+1, &readFD, 0, 0, 0);		cout << "select returned: " << ret << endl;		if (ret < 0)		{			cout << "********** Failed to select: " << ret << endl;			continue;		}		if (FD_ISSET(newSock, &readFD))		{			len = read(newSock, buff, len);			if (len == 0)			{				cout << "End of File read" << endl;				close(newSock);				close(sock);				return -1;			}					cout << "Read data: " << len << endl;			cout << "Read data: " << buff << endl;			write(newSock, buff, len);		}	}    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -