執行三個客戶端程式然後非正常結束linux下我們用ps -a命令可以檢視當前程序的情況如下
解決方法是利用子程序傳遞給父程序的訊號
**如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define myport 9877 //伺服器端口
#define queue 20 //等待佇列大小
#define buffer_size 1024 //緩衝區大小
//訊號處理函式
void sigfunc(int signo)
int main()
//lisen,成功返回0,出錯返回-1
if(listen(server_sockfd,queue)==-1)
int count=0;
//訊號監聽
signal(sigchld,sigfunc);
while(1)
int pid;
//呼叫fork()函式時 如果是父程序呼叫則返回程序號,如果是子程序呼叫則返回0
//這裡父程序用來建立連線 子程序負責處理請求 所以當pid=0才執行
if((pid=fork())==0)
fputs(buffer,stdout);
//把相同的資料傳送給客戶端
send(conn,buffer,len,0);
}close(conn);
exit(0);
}close(conn);
count++;
}close(server_sockfd);
return
0;}
修改後伺服器端效果如下:
伺服器併發處理架構
網路伺服器如何處理併發請求的模型稱之為多工體系結構。1.inetd模式 在大部分unix作業系統中,預設的多工體系結構是inetd應用程式。通用的網路伺服器體系結構inetd分為兩個部分 主服務程序和客戶服務程序。主服務程序通常用於等待客戶端的連線請求。一旦客戶端發起乙個請求,主伺服器將建立連線,同...
伺服器設計 處理併發請求
伺服器設計技術有很多,按使用的協議來分有tcp伺服器和udp伺服器。按處理方式來分有迴圈伺服器和併發伺服器。在網路程式裡面,一般來說都是許多客戶對應乙個伺服器,為了處理客戶的請求,對服務端的程式就提出了特殊的要求。目前最常用的伺服器模型有 迴圈伺服器 伺服器在同一時刻只能響應乙個客戶端的請求 併發伺...
linux多程序併發伺服器
多程序併發伺服器,多執行緒版 include include include include include include include include include include include 程序 函式 void recyle int num int main int argc,cha...