【无标题】

#include 
#define PORT 8888
#define IP "192.168.125.123"
int main(int argc, const char *argv[])
{
	//创建套接字
	int cfd = socket(AF_INET, SOCK_STREAM, 0);
	if(cfd == -1){
		perror("socket error");
		return -1;
	}
	//填充服务端地址结构信息体
	struct sockaddr_in sin;
	sin.sin_family = AF_INET;
	sin.sin_port = htons(PORT);
	sin.sin_addr.s_addr = inet_addr(IP);
	//链接到服务器
	if(connect(cfd, (struct sockaddr*)&sin, sizeof(sin)) == -1){
		perror("connect error");
		return -1;
	}
	printf("connect success");
	//定义检测文件描述符的集合
	fd_set readfds,tempfds;
	//清空集合
	FD_ZERO(&readfds);
	//将0和cfd放入检测文件描述符的集合中
	FD_SET(0, &readfds);
	FD_SET(cfd, &readfds);
	//接收select的返回值
	int res = 0;
	char buf[128] = "";

	while(1)
	{

		tempfds = readfds;
		res = select(cfd+1, &tempfds, NULL, NULL, NULL);
		if(res == -1)
		{
			perror("select error");
			return -1;
		}else if(res == 0)
		{
			puts("time out");
			return -1;
		}
		if(FD_ISSET(0, &tempfds))
		{

			bzero(buf, sizeof(buf));
			fgets(buf, sizeof(buf), stdin);
			buf[strlen(buf) - 1] = 0;
			send(cfd, buf, sizeof(buf), 0);

		}

		if(FD_ISSET(cfd, &tempfds))
		{

			bzero(buf, sizeof(buf));
			res = recv(cfd, buf, sizeof(buf), 0);
			if(res == 0)
			{
				puts("服务器已经下线");
				break;
			}
			printf("[%s: %d] %s\n", inet_ntoa(sin.sin_addr), ntohs(sin.sin_port), buf);

		}


	}

	close(cfd);
	return 0;
}

#include 
#define PORT 8888
#define IP "192.168.125.123"
void del_arr(struct pollfd fds[], int *max, int index)
{
	for(int i=index; i<(*max)-1; i++)
    {
		fds[i] = fds[i+1];
	}
	(*max) -= 1;
}

int main(int argc, const char *argv[])
{
	int sfd = socket(AF_INET, SOCK_STREAM, 0);
	if(sfd == -1)
    {
		perror("socket error");
		return -1;
	}

	int reuse = -1;
	if(setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(reuse)) == -1)
	{
		perror("setsockopt error");
		return -1;
	}

	struct sockaddr_in sin;
	sin.sin_family = AF_INET;
	sin.sin_port = htons(PORT);
	sin.sin_addr.s_addr = inet_addr(IP);
	if(bind(sfd, (struct sockaddr*)&sin, sizeof(sin)) == -1)
	{
		perror("bind error");
		return -1;
	}

	if(listen(sfd, 128) == -1)
	{
		perror("listen error");
		return -1;
	}

	struct sockaddr_in cin;
	socklen_t socklen = sizeof(cin);

	char buf[128] = "";
	int res = -1;

	struct pollfd fds[1024];
	fds[0].fd = 0;
	fds[0].events = POLLIN;

	fds[1].fd = sfd;
	fds[1].events = POLLIN;

	struct sockaddr_in arr_cin[1024];
	int newfd = -1;
	int max = 2;

	while(1)
	{

		res = poll(fds, max, -1);
		if(res < 0)
		{
			perror("poll error");
			return -1;
		}
		else if(res == 0)
		{
			puts("time out");
			return -1;
		}

		for(int index=0; index

【无标题】_第1张图片

你可能感兴趣的:(github,服务器)