socket網路程式設計的相關函式

2021-05-08 13:07:47 字數 3107 閱讀 6797

1.wsastartup函式

用於初始化winsock

[宣告]

intwsastarup(word wversionrequested,lpwsadata lpwsadata);

[引數]

wversionrequested - 要求使用winsock的最低版本號

lpwsadata - winsock的詳細資料

[返回值]

當函式成功呼叫時返回0

失敗時返回非0的值

2.socket函式

用於生成socket(soket descrīptor)

[宣告]

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

[引數]

af - 位址家族(通常使用:af_inet)

type - socket的種類

sock_stream : 用於tcp協議

sock_dgram : 用於udp協議

protocol - 所使用的協議

[返回值]

當函式成功呼叫時返回乙個新的socket(socket descrīptor)

失敗時返回invalid_socket.

3.inet_addr函式

把好象"***.***.***.***"的10進製的ip位址轉換為32位整數表示方法

[宣告]

unsigned long inet_addr ( const char far *cp );

[引數]

cp - 指向用"***.***.***.***"的10進製來表示的ip位址字串的指標

[返回值]

當函式成功呼叫時返回用32位整數表示的ip位址(按網路位元組排列順序)

失敗時返回inaddr_none.

4.gethostbyname函式

可以從主機名獲取主機資料.

[宣告]

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

[引數]

name - 指向主機名字串的指標

[返回值]

當函式成功呼叫時返回主機資訊

失敗時返回null(空值)

5.bind函式

指定本地ip位址所使用的埠號時候使用

[宣告]

int bind ( socket s , const struct sockaddr far *addr , int namelen );

[引數]

s - 指向用socket函式生成的socket descrīptor

addr - 指向socket位址的指標

namelen - 該位址的長度.

[返回值]

當函式成功呼叫時返回0

呼叫失敗時返回 socket_error

6.connect函式

用於與伺服器建立連線,發出連線請求,必須在引數中指定伺服器的ip位址和埠號

[宣告]

int connect (socket s , const struct sockaddr far *name , int namelen );

[引數]

s - 指向用socket函式生成的socket descrīptor

name - 指向伺服器位址的指標

namelen - 該位址的長度.

[返回值]

當函式成功呼叫時返回0

呼叫失敗時返回 socket_error

7.select函式

可以用於調查乙個或多個socket的狀態.

[宣告]

int select ( int nfds , fd_set far *readfds , fd_set far *writefds , fd_set far *exceptfds , const struct timeval far *timeout );

[引數]

nfds - 在windows socket api 中該引數可以忽略,通常賦予nill值

readfds - 由於接受的socket裝置的指標

writefds - 用於傳送資料的socket裝置的指標

exceptfds - 檢查錯誤的狀態

timeout - 超時設定

[返回值]

返回大於0的值時,表示與條件相符的socket數

返回0表示超時

失敗時返回socket_error

8.recv函式

利用socket進行接受資料.

[宣告]

int recv ( socket s , char far *buf , int len , int flags );

[引數]

s - 指向用socket函式生成的socket descrīptor

buf - 接受資料的緩衝區(陣列)的指標

len - 緩衝區的大小

flag - 呼叫方式(msg_peek 或 msg_oob)

[返回值]

成功時返**到的位元組數.

如果連線被中斷則返回0

失敗時返回 socket_error

9.sendto函式

利用socket進行傳送資料.

[宣告]

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

[引數]

s - 指向用socket函式生成的socket descrīptor

buf - 接受資料的緩衝區(陣列)的指標

len - 緩衝區的大小

flag - 呼叫方式(msg_dontroute , msg_oob)

to - 指向傳送方socket位址的指標

token - 傳送方socket位址的大小

[返回值]

成功時返回已經傳送的位元組數.

失敗時返回socket_error

以上適合於基於udp的socket套接字程式設計,和tcp的socket主要區別在建立socket的時候選擇的資料流方式,然後就是在傳送和接收的函式是不同的.下次會寫上關於socket的詳細資料.

socket程式設計相關函式

本文旨在整理一下linux下socket程式設計時一些常用的一些理解總結,如有不足希望大家批評指點 linux version 3.10.0 862.14.4.el7.x86 64 gcc version 4.8.5 20150623 red hat 4.8.5 28 gcc tcp的伺服器端soc...

網路程式設計 socket相關概念

socket介紹 socket位址 了解網路程式設計需要先了解計算機通訊中位元組的儲存順序 考慮32位機,cpu累加器一次能裝載4位元組。這4位元組在記憶體的排列順序影響被累加器裝載成的整數值。位元組序分為大端位元組序 big endian 和小端位元組序 little endian 傳送端總是要把...

解析socket程式設計的相關函式

1.什麼是套接字 乙個完整的網路通訊需要乙個五元組來標識 協議 本地位址 本地埠號 遠端位址 遠端埠號。tcp用主機的ip位址加上主機上的埠號作為tcp連線的端點,這種端點就叫做套接字 流式套接字 sock stream tcp the transmission control protocol 協...