程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 透析ICMP協議(2):Windows Socket簡介

透析ICMP協議(2):Windows Socket簡介

編輯:關於VC++

簡介:

-------

Windows 的Socket函數有許多, 我沒有做詳細介紹, 這裡的函數都是簡要說明其用途, 詳細用法請參考MSDN.

這裡的主要目的是為了後面的三個應用服務.

函數說明:

---------

WSAStartup函數

初始化Winsock

[聲明]

int WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData);

[參數]

wVersionRequested - 要求使用Winsock的最低版本號

lpWSAData - Winsock的詳細資料

[返回值]

當函數成功調用時返回0

失敗時返回非0的值

---

socket函數

用於生成socket(soket Descriptor)

[聲明]

SOCKET socket(int af,int type,int protocol);

[參數]

af - 地址家族(通常使用:AF_INET)

type - socket的種類

SOCK_STREAM : 用於TCP協議

SOCK_DGRAM : 用於UDP協議

protocol - 所使用的協議

[返回值]

當函數成功調用時返回一個新的SOCKET(Socket Descriptor)

失敗時返回INVALID_SOCKET.

---

inet_addr函數

地址轉換, 把"A.B.C.D"的IP地址轉換為32位長整數

[聲明]

unsigned long inet_addr ( const char FAR *cp );

[參數]

cp - 指向IP地址字符串的指針

[返回值]

當函數成功調用時返回用32位整數表示的IP地址

失敗時返回INADDR_NONE.

---

gethostbyname函數

從主機名獲取主機信息.

[聲明]

struct hostent FAR * gethostbyname ( const char FAR *name );

[參數]

name - 指向主機名字符串的指針

[返回值]

當函數成功調用時返回主機信息

失敗時返回NULL(空值)

---

recv函數

利用Socket進行接受數據.

[聲明]

int recv ( SOCKET s , char FAR *buf , int len , int flags );

[參數]

s - 指向用Socket函數生成的Socket Descriptor

buf - 接受數據的緩沖區(數組)的指針

len - 緩沖區的大小

flag - 調用方式(MSG_PEEK 或 MSG_OOB)

[返回值]

成功時返回收到的字節數.

如果連接被中斷則返回0

失敗時返回 SOCKET_ERROR

---

sendto函數

發送數據.

[聲明]

int sendto ( SOCKET s , const char FAR *buf , int len , int flags , const struct sockaddr FAR *to , int token );

[參數]

s - 指向用Socket函數生成的Socket Descriptor

buf - 接受數據的緩沖區(數組)的指針

len - 緩沖區的大小

flag - 調用方式(MSG_DONTROUTE , MSG_OOB)

to - 指向發送方SOCKET地址的指針

token - 發送方SOCKET地址的大小

[返回值]

成功時返回已經發送的字節數.

失敗時返回SOCKET_ERROR

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved