網路程式設計之 多執行緒併發伺服器

2021-10-07 22:33:11 字數 1784 閱讀 9316

思路:迴圈等待連線,連線成功後建立乙個子執行緒處理該連線的資料通訊,然後主線程繼續等待連線。

socket介面封裝:

#include

"wrap.h"

#include

#include

#include

void

sys_err

(const

char

*ch)

intsocket

(int domain,

int type,

int protocol)

return ret;

}int

setsockopt

(int sockfd,

int level,

int optname,

const

void

*optval, socklen_t optlen)

return ret;

}int

bind

(int sockfd,

const

struct sockaddr *addr,socklen_t addrlen)

return ret;

}int

listen

(int sockfd,

int backlog)

return ret;

}int

accept

(int sockfd,

struct sockaddr *addr, socklen_t *addrlen)

else

}return fdc;

}int

connect

(int sockfd,

const

struct sockaddr *addr,socklen_t addrlen)

return ret;

}int

close

(int fd)

return ret;

}

伺服器端**:

#include

"wrap.h"

#include

#include

#include

#include

//toupper

#include

#include

//inet_ntop

#include

//bzero

#define port 8888

struct fdc_info

;void

*dowork

(void

*arg)

//執行緒函式

write

(stdout_fileno,buf,ret)

;for

(int i=

0;i++i)

write

(info->fdc,buf,ret);}

close

(info->fdc)

;return

(void*)

0;//pthread_exit();

}void

server_thread()

close

(fds);}

intmain

(int args,

char

*argc)

測試:

可以開啟多個終端使用nc 127.0.0.1 8888命令建立連線進行測試

python併發程式設計之多執行緒

程序包含了執行該程式所需要所有資源 程序是乙個資源單位 執行緒是cpu的最小執行單位 每乙個程序一旦被建立 就預設開啟了一條執行緒 稱之為主線程 使用執行緒可以提高程式效率 為何不用多程序提高效率 是因為程序對作業系統的資源耗費非常高 執行緒共享建立它的程序的位址空間 程序有自己的位址空間。執行緒可...

linux網路程式設計之多程序併發伺服器

1 使用多程序併發伺服器考慮的因素 1 父程序描述最大檔案描述符的個數 父程序需要關閉accept返回的新檔案描述符 2 系統內可建立程序的個數 與記憶體大小相關 3 程序建立過多是否降低整體服務效能 2 多程序建立併發伺服器思想 1 父程序建立子程序,每個子程序相當於乙個客戶端 2 子程序實現每個...

Linux網路程式設計之多執行緒

多執行緒模型 在多執行緒模型下,注意共享資料的同步,mutex condition variable rw lock等的使用,local thread storage的使用,另外,可以搭配執行緒池處理非同步計算任務。在c 11中的執行緒庫中已經提供了future相關的工具,合理地使用執行緒模型減少資...