并發服務器設計

jopen 9年前發布 | 937 次閱讀 C/C++ IOS

并發服務器就是能夠同時處理多個客戶端請求的服務器。并發服務器可通過多進程或者多線程程序來實現,這里采用多進程程序。

服務器

#include<stdio.h>

include<stdlib.h>

include<string.h>

include<unistd.h>

include<sys/types.h>

include<sys/socket.h>

include<netinet/in.h>/定義了struct sockaddr_in/

void main() { int sockfd; /創建socket/ sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) { printf("create socket false"); exit(1);
} /綁定地址/ struct sockaddr_in server_addr; server_addr.sin_family=AF_INET; server_addr.sin_port=htons(5000); server_addr.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sockfd,(const struct sockaddr )(&server_addr),sizeof(server_addr))==-1) { printf("bind false"); exit(1);
} /
監聽端口/ listen(sockfd,3); /父進程等待連接,成功連接后創建子進程收發數據/ int newfd; struct sockaddr_in client_addr; int addrlen=sizeof(client_addr); char buf[128]; pid_t pid; while(1) { newfd=accept(sockfd,(struct sockaddr )(&client_addr),&addrlen); pid=fork(); if(pid==0) { while(1) { recv(newfd,buf,128,0); printf("the message is from :%s\n",inet_ntoa(client_addr.sin_addr)); printf("the message received is %s\n",buf); if(strcmp(buf,"exit")==0) { break;
}

        }
        close(newfd);
        close(sockfd);
        exit(0);
    }
}
/*結束連接*/
close(newfd);
close(sockfd);

}</pre>

客戶端

#include<stdio.h>

include<stdlib.h>

include<string.h>

include<unistd.h>

include<sys/types.h>

include<sys/socket.h>

include<netinet/in.h>/定義了struct sockaddr_in/

void main() { /創建socket/ int sockfd=socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) { printf("create socket false"); exit(1);
} /連接服務器/ struct sockaddr_in server_addr; server_addr.sin_family=AF_INET; server_addr.sin_port=htons(5000); server_addr.sin_addr.s_addr=inet_addr("192.168.137.246"); if(connect(sockfd,(const struct sockaddr )(&server_addr),sizeof(server_addr))==-1) { printf("connect false"); exit(1);
} /
收發數據/ printf("please enter your message,and exit for exit\n"); char buf[128]; while(1) { scanf("%s",buf); send(sockfd,buf,128,0); if(strcmp(buf,"exit")==0) break; } /結束連接*/ close(sockfd); }</pre>
來自:http://blog.csdn.net/u011012049/article/details/47452669

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!