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

2021-07-31 12:02:44 字數 1082 閱讀 5135

對伺服器來說,以執行緒為客戶服務的方式有三種:

1.每來乙個客戶就為其建立乙個執行緒;

3.建立乙個執行緒池,在main中accept;

對於第一種:

int  main(int argc, char const *argv)

return 0;

}void *doit(void *arg)

對於第二種:

typedef struct

thread;

thread *tptr;

int listenfd,nthreads;

socklen_t addrlen;

pthread_mutex_t mlock;

int main(int argc, char const *argv)

thread;

thread *tptr;

#define maxncli 32

int clifd[maxncli] ,iget ,iput;

pthread_mutex_t clifd_mutex = pthread_mutex_initializer;

pthread_cond_t clifd_cond = pthread_cond_initializer;

static int nthreads;

int main(int argc, char const *argv)

{ int i;

int connfd;

socklen_t clilen;

struct sockaddr *cliaddr;

void sig_int(int,thread_make(int));

listenfd = tcp_listen(/**/);

nthreads = atoi(argv[argc-1]);

cliaddr = malloc(addrlen);

tptr = calloc(nthreads,sizeof(thread));//一共nthreads個執行緒,執行緒資訊用結構體陣列來儲存

iget=iput=0;

for(i=0;i

TCP伺服器實現epoll併發實現

原始碼在最下方 併發伺服器 tcp伺服器百萬級連線 申請乙個int sockfd socket af inet,sock stream,0 初始化乙個例項sockaddr in struct sockaddr in addr memset addr,0,sizeof struct sockaddr ...

TCP併發伺服器

int main int recvcnt 0 struct sockaddr in sock server struct sockaddr in sock client int len sizeof struct sockaddr socketfd socket pf inet,sock strea...

執行緒TCP伺服器

include include include include include include include include define portnumber 3333 void read msg void arg void write msg void arg int main int arg...