socket函式
#include /* see notes */
#include
int socket(int domain, int type, int protocol);
domain:
af_inet這是大多數用來產生socket的協議,使用tcp或者udp來傳輸,用ipv4位址;
af_inet6與上面類似,不過時來用ipv6位址;
af_unix本地協議,使用在unix和linux系統上,一般時客戶機和伺服器在同一臺機器上時才能使用;
type:
sock_stream:這個協議時按照順序的,可靠的資料完整的基於位元組流的連線,這是乙個使用最多的sockt,是使用tcp進行傳輸;
sock_dgram這個協議是無連線的,固定長度的傳輸呼叫,該協議是不可靠的,使用udp來進行它的連線;
sock_seqpacket該協議是雙線路的,可靠的連線,傳送固定長度的資料報進行傳輸。必須把這個資料報完整的接受才能讀取。
sock_raw socket型別提供單一的網路訪問,這個socket型別使用icmp公共協議(ping ,traceroute使用該協議);
sock_rdm這個型別是很少使用的,在大部分作業系統中沒有實現,它是提供給資料鏈路層使用的,不保證資料報的順序;
protocol:
傳0表示使用預設協議;
返回值:成功指向新建立的socket的檔案描述符,失敗,返回-1 設定errorno;
2.bind函式 (將埠號和ip繫結在套接字上面)
#include /* see notes */
#include
int bind(int sockfd, const struct sockaddr addr, socklen_t addrlen);
sockfd:socket檔案描述符
addr:構造出ip位址加埠號;
addrlen:sizeof(addr)長度;
返回值:成功返回0,失敗返回-1設定errno;
3.listen函式(指定監聽上限數,指定bcaklog個客戶端等待連線)
#include / see notes /
#include
int listen(int sockfd, int backlog);
sockfd:socket檔案描述符;
backlog:排隊建立3次握手佇列和剛剛建立3次握手佇列的連線數和;
檢視系統預設的backlog
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
成功返回0,失敗返回-1;
4. accept函式
#include / see notes */
#include
int accept(int sockfd, struct sockaddr *addr, socklen_t addrlen);
socket:socket檔案描述符
addr:傳出引數,傳出鏈結客戶端位址資訊,含ip位址和埠號;
addrlen: 傳入傳出引數(值-結果),傳入sizeof(addr)大小,函式返回時返回真正接收到的位址結構體的大小返回值;
返回值:
成功返回乙個新的socket檔案描述符,用於和客戶端通訊,失敗返回-1,設定errorno;
5.connect函式(客戶端呼叫,連線伺服器)
#include / see notes */
#include
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);
sockfd:socket檔案描述符
addr;傳入引數,指定伺服器端位址資訊,含ip位址和埠號;
addrlen:傳入引數,傳入sizeof(addr)大小
返回值:成功返回0,失敗返回-1,設定errorno;
網路程式設計 套接字函式
編寫乙個完整的tcp客戶 伺服器程式需要一些基本的套接字函式 下面依次介紹上圖中涉及的基本套接字函式 read 和write 在此不做複述 socket函式 為執行網路i o,首先要呼叫socket 函式指定期望的通訊型別 family 指定協議族 type 指定套接字型別 protocol 或為協...
網路套接字 位址轉換函式
sockaddr in中的成員struct in addr sin addr表示32位的ip位址,但是我們通常採用的是利用點分十進位制ide字串來表示ip位址,以下的函式可以在字串表示和in addr表示之間的轉換。字串轉in addr的函式 in addr轉字串的函式 其中inet ptoa和in...
網路IPC 套接字
1.套接字是通訊端點的抽象。與應用程式要用檔案描述符訪問檔案一樣,訪問套接字也需要用套接字描述符。套接字描述符在unix系統是用檔案描述符實現的。要建立乙個套接字,可以呼叫socket函式。include int socket int domain,int type,int protocol 返回值...