当前位置: 技术问答>linux和unix
fork 通讯服务器 并发实现的问题 ?求教!!!!!
来源: 互联网 发布时间:2015-10-11
本文导语: 服务器使用fork 每次accept后,fork出子进程来处理通讯。在我想象中并发,就是多个子进程可以处理多个客户端的服务请求。但是我写的程序,为啥服务端同时只能为一个客户端工作,而且非要到被服务端接受的客户...
服务器使用fork 每次accept后,fork出子进程来处理通讯。在我想象中并发,就是多个子进程可以处理多个客户端的服务请求。但是我写的程序,为啥服务端同时只能为一个客户端工作,而且非要到被服务端接受的客户端退出,才能为其他客户端服务?
以下是服务端程序
//循环的接受客户端的字符窜,返回特定的字符窜
#include
#include
#include
#include
#include
#include
#include
#include
void doit(int fd);
main(int argc,char **argv)
{
struct timeval rto,sto;
fd_set outtim;
int sele;
struct stat f_stat;
pid_t childpid;
unsigned int dw =0;
unsigned int rd =0;
int sockfd;
int newsockfd;
int lis;
struct sockaddr_in cli_addr,serv_addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=INADDR_ANY;
serv_addr.sin_port=htons(4001);
if(bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))
以下是服务端程序
//循环的接受客户端的字符窜,返回特定的字符窜
#include
#include
#include
#include
#include
#include
#include
#include
void doit(int fd);
main(int argc,char **argv)
{
struct timeval rto,sto;
fd_set outtim;
int sele;
struct stat f_stat;
pid_t childpid;
unsigned int dw =0;
unsigned int rd =0;
int sockfd;
int newsockfd;
int lis;
struct sockaddr_in cli_addr,serv_addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=INADDR_ANY;
serv_addr.sin_port=htons(4001);
if(bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))