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

📄 client.cpp

📁 Linux下编程实现服务器与客户端的连接
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
main() {
	int sockfd,new_fd;
	struct sockaddr_in my_addr;
	struct sockaddr_in their_addr;
	int sin_size;
	//建立TCP套接口
	if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1) {
		perror("socket");
		exit(1);
	}
	//初始化结构体,并绑定2323端口
	my_addr.sin_family = AF_INET;
	my_addr.sin_port = htons(2323);
	my_addr.sin_addr.s_addr = INADDR_ANY;
	bzero(&(my_addr.sin_zero),8);
	//绑定套接口
	if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct 
		sockaddr))==-1)
	{
		perror("bind");
		exit(1);
	}
	//创建监听套接口
	if(listen(sockfd,10)==-1) {
		perror("listen");
		exit(1);
	}
	//等待连接
	while(1) {
		sin_size = sizeof(struct sockaddr_in);
		perror("server is run");
		//如果建立连接,将产生一个全新的套接字
		if((new_fd = accept(sockfd,(struct sockaddr *)
			&their_addr,&sin_size))==-1)
		{
			perror("accept");
			exit(1);
		}
		//生成一个子进程来完成和客户端的会话,父进程继续监听
		if(!fork()) {
			//读取客户端发来的信息
			if((numbytes = recv(new_fd,buff,strlen(buff),0))==-1)
			{
				perror("recv");
				exit(1);
			}
			printf("%s",buff);
			//将从客户端接收到的信息再发回客户端
			if(send(new_fd,buff,strlen(buff),0)==-1)
				perror("send");
			close(new_fd);
			exit(0);
		}
		close(new_fd);
	}
	close(sockfd);
}

⌨️ 快捷键说明

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