?? server.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 + -