Windows網路程式設計 I O復用的多人聊天室

2021-09-02 22:30:21 字數 1403 閱讀 6742

**:

請多開幾個客戶端進行測試。

//server

#define _winsock_deprecated_no_warnings

#define _crt_secure_no_warnings

#include #include #include #include//定義socklen_t

using namespace std;

#pragma comment(lib, "ws2_32") // 鏈結到ws2_32.lib

#define server_ip "127.0.0.1"// 預設伺服器端ip位址

#define server_port 8888// 伺服器端口號

class server

;int main()

server::server()

//初始化函式,建立監聽套接字,繫結埠,並進行監聽

void server::init()

else printf("server is running......\n");

if (bind(listener, (sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)

listen(listener, 5);//listener這個套接字監聽申請的鏈結,最大等待連線隊列為5,等待accept()

socksarr.push_back(listener);//將監聽套接字加入套接字陣列,陣列內首個套接字就是伺服器的套接字

}void server::process()

;int main()

client::client()

void client::init()

; printf("establish succesfully\n");//建立成功,阻塞式的等待伺服器連線

if (connect(user, (const sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)

printf("connect ip:%s port:%d succesfully\n", server_ip, server_port);//建立成功

}void client::process()

;//每個select等待三秒

switch (select(0, &fdread, &fedwrite, null, &timeout))

case 0:

break;

default:

else if (size == 0)

}if (fd_isset(user, &fedwrite))

break;

} } }}

void client::sendata()

TCP IP網路程式設計 IO復用

引入復用技術,可以減少程序數,無論連線多少客戶端,提供服務的程序只有乙個。select函式可以實現io復用,它可以將多個檔案描述符集中到一起統一監視 是否存在套接字接收資料?無需阻塞傳輸資料的套接字有哪些?哪些套接字發生了異常?下面是具體用例 復用 時分復用 頻分復用 使用select函式完成io復...

網路程式設計學習 IO復用 select poll

本文為unp第6章學習筆記 一,select函式 include int select int maxfd,fd set readset,fd set writeset,fd set exceptset,const struct timeval timeout 引數 maxfd select管理的最...

《網路程式設計》I O 多路復用

在前面的文章中介紹了五種 i o 模型 i o 模型 這裡介紹 i o 模型中 i o 多路復用在 tcp 套接字程式設計中的使用。在 i o 多路復用中主要是 select 和 poll 函式的使用。該函式允許程序指示核心等待多個事件中的任何乙個發生,並只在乙個或多個事件發生或超過指定時間後才被喚...