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

📄 server.c

📁 TCP/IP服务器程序简略实现
💻 C
字号:
#include <sys/socket.h>#include <netinet/in.h>#include <sys/types.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <error.h>#include <unistd.h>#include<unistd.h>#include <sys/types.h>#include <fcntl.h>#include <sys/stat.h>#define SERVERPORT 3333#define BACKLOG 10#define MAXSIZE 8192int main(void){    int flags;    int fd, writesize;    struct sockaddr_in server_sockaddr;    struct sockaddr_in client_sockaddr;    int addrlen;    addrlen = sizeof(struct sockaddr);    int sockfd, bindfd, listenfd, clientfd, recvbytes;    char buf[MAXSIZE];    sockfd = socket(AF_INET, SOCK_STREAM, 0);    if(sockfd == -1) {	printf("Create a socket error!!!\n");	exit(1);    }    else	printf("sockfd success!!! sockfd = %d\n",sockfd);    server_sockaddr.sin_family = AF_INET;    server_sockaddr.sin_port = htons(SERVERPORT);    server_sockaddr.sin_addr.s_addr = INADDR_ANY;    memset(server_sockaddr.sin_zero, 0, sizeof(server_sockaddr.sin_zero));    bindfd = bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr));    if(bindfd == -1) {	printf("bind error!!!\n");	exit(1);    }    else	printf("bind success!!!\n");	    listenfd = listen(sockfd, BACKLOG);    if(listenfd == -1) {	printf("listen error!!!\n");	exit(1);    }    else	printf("listening-----\n");    /*    if((flags=fcntl( sockfd, F_SETFL, 0))<0)	perror("fcntl F_SETFL");    flags |= O_NONBLOCK;    if(fcntl( sockfd, F_SETFL,flags)<0)	perror("fcntl");     */    clientfd = accept(sockfd, (struct sockaddr *)&client_sockaddr, &addrlen);    if(clientfd == -1) {	printf("accept error!!!\n");	exit(1);    }    else	printf("accept success!!!\n");    fd = open("/home/hongzhi/UNIX/linux_code/10/list", \	    O_WRONLY | O_CREAT | O_TRUNC | O_APPEND);     do {	recvbytes = recv(clientfd, buf, sizeof(buf), 0);	if(recvbytes == -1) {	    printf("recv error!!!\n");	    exit(1);	}	else 	    if(recvbytes > 0) {		printf("recv success!!! %d\n",recvbytes);		printf("receive : %s\n",buf);		writesize = write(fd, buf, recvbytes);	    }	    else		printf("END!!!\n");    } while(recvbytes > 0);    close(sockfd);    close(fd);    return 0;}    

⌨️ 快捷键说明

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