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

📄 tcpserv01.c

📁 linux下的聊天程序
💻 C
字号:
#include <curses.h>#include <netdb.h>#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> #define SERV_PORT 9877 #define LISTENQ 1024 #define MAXLINE 4096 #define SA struct sockaddrvoid str_echo(int sockfd){	ssize_t		n;	char		line[MAXLINE];	for ( ; ; ) {		if ( (n = Readline(sockfd, line, MAXLINE)) == 0)			return;		/* connection closed by other end */		Writen(sockfd, line, n);	}}int main(int argc, char **argv){	int	listenfd, connfd;	pid_t	childpid;	socklen_t	clilen;	struct sockaddr_in	cliaddr, servaddr;	listenfd = socket(AF_INET, SOCK_STREAM, 0);	bzero(&servaddr, sizeof(servaddr));	servaddr.sin_family      = AF_INET;	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);	servaddr.sin_port        = htons(SERV_PORT);	bind(listenfd, (SA *) &servaddr, sizeof(servaddr));	listen(listenfd, LISTENQ);	for ( ; ; ) {		clilen = sizeof(cliaddr);		connfd = accept(listenfd, (SA *) &cliaddr, &clilen);		if ( (childpid = fork()) == 0) {	/* child process */			close(listenfd);	/* close listening socket */			str_echo(connfd);	/* process the request */			exit(0);		}		close(connfd);		/* parent closes connected socket */	}}

⌨️ 快捷键说明

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