一、問題描述
tcp程式設計學習中,當開啟tcp_server後,同時開啟乙個tcp_client不執行。再開啟乙個tcp_client傳送資料後。
tcp_server沒有響應,因為tcp_server建立和第乙個tcp_client的連線後,一直在等待它的資料(阻塞狀態)。
為了解決這個問題,我們需要建立子程序來接受資料,而父程序只要一直建立連線就行了。這樣就能不斷的處理資料了。
二、**改寫
tcp_server->tcp_server_fork.c:
#include
#include
#include
#include
#include
#define portnum 3333
int main()/
*2.1設定要繫結的位址*
/bzero(
&server_addr, sizeof(struct sockaddr_in));
server_addr.sin_family = af_inet;
server_addr.sin_port = htons(portnum)
;server_addr.sin_addr.s_addr = htonl(inaddr_any);/
*2.2.繫結位址*
/bind(sockfd,
(struct sockaddr *
)&server_addr, sizeof(struct sockaddr));
/*3.監聽埠*
/listen(sockfd, 5)
;while
(1)printf(
"server get connection form %s\n"
, inet_ntoa(client_addr.sin_addr));
/*由子程序來處理資料通訊*/if
(pid = fork()=
= 0)
else
if(pid < 0)
}close(sockfd)
;return 0;}
0 給主人留下些什麼吧!~~
網路併發伺服器設計
網路併發伺服器設計 1 include 2 include 3 include 4 include 5 include in.h 67 include 8 9 define portnum 3333 1011 intmain 1228 29 2.1設定繫結的位址 30 bzero server ad...
網路併發伺服器設計 9
網路併發伺服器設計 1 include 2 include 3 include 4 include 5 include in.h 6 7 include 8 9 define portnum 3333 10 11 intmain 12 28 29 設定繫結的位址 30 bzero server ad...
併發伺服器設計
併發伺服器就是能夠同時處理多個客戶端請求的伺服器。併發伺服器可通過多程序或者多執行緒程式來實現,這裡採用多程序程式。include include include include include include include 定義了struct sockaddr in void main 繫結位址...