#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...