多執行緒伺服器(簡易)

2022-05-16 17:24:51 字數 1882 閱讀 9192

由於單程序伺服器只能處理乙個客戶端,所以引入了多執行緒,這樣便可以處理多客戶端,同時還可以鍛鍊多執行緒的一些知識,並加以鞏固網路程式設計。

在這裡我使用的環境是linux,windows的不能執行這個程式。

#ifndef header_h

#define header_h#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define server_ip "127.0.0.1"

#define client_ip "127.0.0.1"

#define server_port 8887

#endif

//header_h

#include "

config.h"//

client information

struct

clientinfo;

void *delclient(void *arg)

for(size_t i = 0; i < strlen(buf)+1;i++)

write(client->socke,buf,n);

}}int

main()

//init addrser

inet_pton(af_inet,server_ip,&addrser.sin_addr.s_addr);

addrser.sin_family =af_inet;

addrser.sin_port =htons(server_port);

//bind

if(0 != bind(sockser,(sockaddr*)&addrser,sizeof

(addrser)))

//listen

if(0 !=listen(sockser,client_num))

//acctept

while (1

)

//init client msg to thread

memcpy(&clientinfo[i].sockclient,&addrcli,sizeof

(addrcli));

clientinfo[i].socke =sockclient;

//create thread

pthread_t pid;

pthread_create(&pid,null,delclient,(void*)&clientinfo[i]);

pthread_detach(pid);

}return0;

}

//

nc 伺服器ip位址 伺服器端口號

nc 127.0.0.1

8887

也可以使用自己寫的:

//

client.c

#include

"config.h

"int

main()

addrser.sin_family =af_inet;

addrser.sin_port =htons(server_port);

inet_pton(af_inet,client_ip,&addrser.sin_addr.s_addr);

if( 0 != connect(sockser,(sockaddr*)&addrser,sizeof

(sockaddr)))

char buf[100

];

while(1

)}

多執行緒伺服器

posix執行緒庫 a 與執行緒有關的函式都構成了乙個完整的系列,絕大多數函式的名字都是以 pthread 打頭的。b 要使用這些庫函式,要引入標頭檔案。c 鏈結這些執行緒庫函式時要使用編譯命令的 lpthread 選項。int pthread create pthread t thread,con...

多執行緒時間伺服器

include stdafx.h include include include include include define port 8080 int x 1 void error char str dword winapi new client proc lpvoid lpparam prin...

ACE多執行緒伺服器

ace adaptive communication environment 它是乙個物件導向的 跨平台的 開放原始碼的網路程式設計基礎設施框架。ace 是由加利福尼亞大學irvine分校的douglas c.schmidt 博士主導開發的,是一種跨平台可編譯的網路程式設計api,並隨後在工業界中發...