思路:迴圈等待連線,連線成功後建立乙個子執行緒處理該連線的資料通訊,然後主線程繼續等待連線。
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相關的工具,合理地使用執行緒模型減少資...