Winsock非同步方式程式設計例項 原創

2021-04-01 05:08:56 字數 1048 閱讀 8115

//這是乙個winsock非同步程式設計的例子

//這個服務監聽1000埠,可以使用 tel*** localhost 1000進行測試,最大允許20個連線

#include

#include

#pragma ***ment(lib, "ws2_32.lib")

#define max_sockets 20

#define max_backlog 1

#define port 1000

socket startlisten(int port)

socket sock=socket(af_i***,sock_stream,ipproto_ip);

if(sock==invalid_socket)

sockaddr_in addr;

addr.sin_family=af_i***;

addr.sin_port= htons(port); //保證位元組順序

addr.sin_addr.s_addr= htonl(inaddr_any);

nresult=bind(sock,(sockaddr*)&addr,sizeof(sockaddr));

if(nresult==socket_error)

nresult=listen(sock,max_backlog); //最多 max_backlog 個 pending 連線

if(nresult==socket_error)

printf("please try: tel*** localhost 1000/n");

return sock;

}int main()

}break;

case fd_read:

rc=send(socklist[index],&mess,sizeof(mess),0);

printf("%c",mess);

}break;

case fd_write:

break;

case fd_close:

break;}}

return 0;

}

WinSock和非同步io

一般socket本身可以設定屬性,阻塞或者非阻塞,阻塞模式下accept,connect,send,recv,sendto,recvfrom操作都會等待socket的訊號,send要等待操作完成後才會返回,等待的時間也是在等socket的狀態變為可寫。只不過等待的操作由作業系統來做,當前執行緒被掛起...

winsock程式設計

伺服器端 include include pragma comment lib,ws2 32.lib using namespace std void do service socket conn while 1 不斷接收客戶端傳送的資料 if lobyte wsadata.wversion 2 h...

Winsock程式設計框架

microsoft的windows sockets api是windows下的網路應用程式介面,為了適用於 windows下的訊息機制和非同步的i o選擇操作,windows sockets api在功能上擴充了將近 20個函式,其中擴充的部分均冠以字首wsa windows sockets asy...