執行緒TCP伺服器

2021-07-25 06:42:52 字數 1314 閱讀 9708

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#include 

#define portnumber 3333  

void * read_msg(void *arg)  

}  void * write_msg(void * arg)  

}  int main(int argc, char *argv)  

/* 伺服器端填充 sockaddr結構 */  

bzero(&server_addr,sizeof(struct sockaddr_in)); // 初始化,置0  

server_addr.sin_family=af_inet;                 // internet  

server_addr.sin_addr.s_addr=htonl(inaddr_any);  // (將本機器上的long資料轉化為網路上的long資料)和任何主機通訊  //inaddr_any 表示可以接收任意ip位址的資料,即繫結到所有的ip  

//server_addr.sin_addr.s_addr=inet_addr("192.168.1.1");  //用於繫結到乙個固定ip,inet_addr用於把數字加格式的ip轉化為整形ip  

server_addr.sin_port=htons(portnumber);         // (將本機器上的short資料轉化為網路上的short資料)埠號  

/* **sockfd描述符到ip位址 */  

if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)  

/* 設定允許連線的最大客戶端數 */  

if(listen(sockfd,5)==-1)  

while(1)  

fprintf(stderr,"server get connection from %s\n",inet_ntoa(client_addr.sin_addr)); // 將網路位址轉換成.字串  

pthread_create(&id,null,(void *)read_msg,(void *)&new_fd);  

pthread_create(&id,null,(void *)write_msg,(void *)&new_fd);  

}  /* 結束通訊 */  

close(sockfd);  

exit(0);  

QT多執行緒伺服器Tcp

最近寫乙個專案用到了伺服器開啟多執行緒,閱部落格無數,奈何沒有理解精髓,致晚上夢見自己寫出來了。次日,奮筆疾書,埋頭苦學,最後終於寫出來了。現在總結一下。伺服器多執行緒需要用到 qtcpserver qtcpsocket qthread qtcpserver 最主要的乙個incomingconnec...

以執行緒實現TCP併發伺服器

對伺服器來說,以執行緒為客戶服務的方式有三種 1.每來乙個客戶就為其建立乙個執行緒 3.建立乙個執行緒池,在main中accept 對於第一種 int main int argc,char const argv return 0 void doit void arg 對於第二種 typedef st...

TCP伺服器模型

迴圈伺服器 迴圈伺服器在同乙個時刻只可以響應乙個客戶端的請求 併發伺服器 併發伺服器在同乙個時刻可以響應多個客戶端的請求 9.1 迴圈伺服器 udp伺服器 udp迴圈伺服器的實現非常簡單 udp伺服器每次從套接字上讀取乙個客戶端的請求,處理,然後將結果返回給客戶機.可以用下面的演算法來實現.sock...