winsock程式設計(一)

2021-04-23 06:42:08 字數 1815 閱讀 6571

一.windows sockets:背景知識

socket的定義。

socket控制代碼型別的描述。

socket的應用領域。

windowssockets規範為windows定義了一套面向位元組相容的網路程式設計介面。windowssockets基於unix socket(伯克利軟體發行機構,bsd,release 4.3)實現上。該規範包含了bsd風格的socket和windows的擴充套件規範。使用windowssockets能保證你的程式能通過任何網路通訊,只要網路能支援windowssocketsapi。在win32中,windowssockets是執行緒安全的。

許多軟體商在協議層支援windowssockets,包括tcp/ip、xns、decnet、ipx/spx以及其他的協議。儘管windowssockets規範定義了tcp/ip的抽象,其他網路協議也能和windowssockets一致,只要這些協議能提供它自己的dll實現。使用windowssockets的典型商業應用程式案例包括:xwindowserver,終端**,和電子郵件系統。

說明:請記住windowssockets的目的是為了抽象網路底層通訊協議,所以你不一定要對底層協議非常了解,你的程式也能執行在任何支援sockets的網路上。因此,本文不討論詳細的網路通訊協議。

mfc提供了兩個類來支援使用windowssocketsapi程式設計。其中之一是csocket,提供乙個高層次的抽象來簡化你的網路通訊程式設計。更多mfc支援socket的資訊,請參考:windows sockets網路程式設計,概覽。

windows sockets規範:windows下的網路計算開放規範介面,現在是1.1版本,是作為乙個開放的網路標準來開發的,由很大數目的個人和組織在tcp/ip開發,並且是免費使用。socket程式設計現在程式設計了社群的乙個交流專題,在網路協議板塊下。規範在win32sdk中可用。

1.socket的定義

socket是網路通訊的端點(endpoint)――widows sockets應用程式通過它來傳送或者接受網路資料報。乙個socket有乙個型別,並且和乙個執行的程序關聯,它也可能有乙個名字。目前為止,socket一般只是和socket交流資料,他們使用的是internet協議簇。

兩邊的socket都是雙向的:他們是能在兩個方向傳遞的資料流(全雙工)。

兩個socket型別可以使用:

stream socket:

stream socket為不記錄邊界的資料流提供――位元組流。流保證被投遞並且正確的序列和不重複的投遞。

datagram socket:

datagram socket支援面向記錄的資料流,不保證被正確投遞,並且可能不會按照傳送的序列達到,也可能重複。

「正確的序列」意思是包按照它們被傳送的次序到達。「不重複的投遞」意思是對於每個唯一的包你只會收到一次。

若你需要了解這些型別,以及在何種情況下應該用何種socket,請參考:windows socket:stream socket和windows sockets:datagram socket。

2.socket資料型別

每個mfc socket物件封裝了乙個windows sockets物件的控制代碼。這個控制代碼的型別是socket。socket型別和視窗的hwnd非常類似。mfc socket類提供了在這個封裝的控制代碼的操作。

socket資料型別在win32 sdk中有詳細的說明。請參考windows socket主題下的socket資料型別和錯誤**。

3.socket的應用領域

socket非常有用,至少在下面三個領域:

client/server模型

對等網路,如聊天程式。

rpc呼叫,呼叫應用程式象呼叫函式一樣方便。

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...

WINSOCK 程式設計要點

利用winsock程式設計由同步和非同步方式,同步方式邏輯清晰,程式設計專注於應用,在搶先式的多工作業系統中 winnt win2k 採用多執行緒方式效率基本達到非同步方式的水平,應此以下為同步方式程式設計要點。1 快速通訊 winsock的nagle演算法將降低小資料報的傳送速度,而系統預設是使用...