天天看點

client & server 單線程

從頭開始:

首先,做windows的用戶端和伺服器,都要包含WinSock2.h這麼一個頭檔案,至于Linux的,之後在繼續研究;stdio.h & stdlib.h中有相關的一些io操作和庫操作,如果有能力,你可以寫自己的stdio.h和stdlib.h本人并不贊成這樣做。

‘#pragma comment(lib, "ws2_32.lib")

這個庫對應ws2_32.dll,提供了對socket網絡相關api以及其他相關的api的支援,若要使用其中的api,則應該将ws2_32.lib加入工程或者加入動态庫ws2_32.dll

這些api有:accept, bind, closesocket, connect, getpeername, getsockname, getsockopt, htonl, htons, ioctlsocket, inet_addr, inet_ntoa, listen, ntohl, ntohs, recv, recvfrom, select, send, sendto, setsockopt, shutdown, socket, GetAddrinfoW, GetNameInfoW, WSApSetPostRoutine, FreeAddrInfoW, WPUCompleteOverlappedRequest ... 太特麼多了,不寫了,繼續往下走;

WSAData是一個結構體:該結構體存放windows socket初始化資訊,其中包括Winsock版本号;Winsock 動态庫支援的最高版本(高位元組代表次版本,低位元組代表住版本)等等

我們知道ip+port辨別了一個唯一的程序,這裡port即是我們定義的接口,其實也可以使用宏定義來定義接口;

接下來就是常用的建立,初始化,綁定,偵聽,連接配接,接收/發送資料,關閉socket,清理->結束,這裡有一點,使用while(1)實作死循環,這個挺有代表性的;代碼就省了,看的話就去我引的blog。

繼續閱讀