並發伺服器設計

來源:互聯網
上載者:User

標籤:

並發伺服器設計

採用多進程來處理

 

tcp_server_fork.c

 1 #include <stdio.h> 2 #include <sys/socket.h> 3 #include <string.h> 4 #include <netinet/in.h> 5  6 #define portnum 3333 7  8 int main() 9 {10     int sockfd ,new_fd;11     struct sockaddr_in server_addr;12     struct sockaddr_in client_addr;13     char buffer[128];14     int nbyte;15     int sin_size;16     int pid;17     //建立通訊端18     if((sockfd = socket(AF_INET,SOCK_STREAM,0))== -1)19     {20         printf("create socket error.\n");21         exit(1);22     }23     //2.1設定要綁定的地址24     bzero(&server_addr,sizeof(struct sockaddr_in));25     sockaddr_in.sin_family = AF_INET;26     sockaddr_in.sin_port = htons(portnum);//客戶機轉為網路字元序27     sockaddr_in.sin_addr.s_addr = htonl(INADDR_ANY);//客戶機轉為網路字元序28     //2.2綁定地址29     bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr));30     //3.監聽連接埠31     listen(sockfd,5);32     while(1)33     {34         //4.等待串連35         sin_size = sizeof(struct sockaddr);36         new_fd = accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size);37         printf("server get connection from %s\n",inet_ntoa(client_addr.sin_addr));38 39         //由子進程來處理資料通訊40         if(pid = fork() == 0)41         {42             //5.接收資料43             nbyte = recv(new_fd,buffer,128,0);44             buffer[nbyte]=‘\0‘;45             printf("server received : %s\n",buffer);46 47             close(new_fd);48             close(sockfd);49             exit(0);50         }51         else if(pid <0)52         {53             printf("fork error!\n");54         }55         //6.結束串連56         colse(new_fd);57 58     }59     close(sockfd);60     61     return 0;62 }
tcp_server_fork.c

 

tcp_client.c

 1 #include <stdio.h> 2 #include <string.h> 3 #include <sys/socket.h> 4 #include <netinet/in.h> 5  6 #define portnum 3333 7  8 int main() 9 {10     struct sockaddr_in server_addr;11     int sockfd;12     char buffer[128];13 14     //1.建立通訊端15     if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)16     {17         printf("create socket error.\n");18         exit(1);19     }20     //2.1設定要連結的伺服器的地址21     bzero(&server_addr,sizeof(struct sockaddr_in));22     server_addr.sin_family = AF_INET;23     server_addr.sin_port = htons(portnum);24     server_addr.sin_addr.s_addr = inet_addr("192.168.1.113");//伺服器IP地址25     //2.連結的伺服器26     if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr)) == -1)27     {28         printf("connect error.\n");29         exit(1);30     }31     //3.發送資料到伺服器32     printf("Please input char:\n");33     fgets(buffer,128,stdin);34     send(sockfd,buffer,strlen(buffer),0);35     //4.關閉串連36     close(sockfd);37 38     return 0;39 }
tcp_client.c

 

並發伺服器設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.