網路併發伺服器設計

2021-08-06 05:37:41 字數 1096 閱讀 5002

一、問題描述

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 繫結位址...