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

📄 server.c

📁 网络通信编程
💻 C
字号:
//============================================================================// Name        : server.cpp// Author      : maduohe// Version     :// Copyright   : nercis// Description : Hello World in C, Ansi-style//============================================================================#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <unistd.h>#include <netdb.h>#define MAXSIZE 80#define MYPORT 3490#define BACKLOG 10#define BUFSIZE 100void str_ser(int sockfd);int main(void)  {    int sockfd,con_fd,ret;    struct sockaddr_in my_addr;    struct sockaddr_in their_addr;    int sin_size = sizeof(struct sockaddr_in);    //char *buf;    int pid ;    sockfd = socket(AF_INET,SOCK_STREAM,0);    if(sockfd<0)      {        printf("error in socket.");        exit(0);      }        //创建监听套接口    my_addr.sin_family = AF_INET;    my_addr.sin_port = htons(MYPORT);    my_addr.sin_addr.s_addr = htonl(INADDR_ANY);    bzero(&(my_addr.sin_zero),8);    ret = bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr));    if(ret<0)      {        printf("error in binding");      }        //绑定监听套接口    ret = listen(sockfd,BACKLOG);    if(ret<0)      {        printf("error in listening");        exit(1);      }        //监听连接请求    while(1)      {        ///sin_size = sizeof(struct sockaddr_in);        con_fd = accept(sockfd,(struct sockaddr*)&their_addr,(socklen_t*)&sin_size);        if(con_fd<0)          {            printf("error in accept.");            exit(1);          }        //创建新的连接        if((pid = fork()) == 0)          {            //子进程代码            close(sockfd);            str_ser(con_fd);            //接受并处理数据            close(con_fd);            exit(0);          }        else          {            //父进程代码            close(con_fd);          }      }    close(sockfd);    exit(0);  }void str_ser(int sockfd)  {    char recvs[MAXSIZE];    int n=0;    while(1)      {        if((n = recv(sockfd,recvs,MAXSIZE,0)) == 0)          {            return;          }        send(sockfd,recvs,n,0);      }  }

⌨️ 快捷键说明

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