網路程式設計0x02 connect函式及其errno

2021-10-05 14:08:07 字數 1661 閱讀 5404

對於客戶機而言,要與伺服器進行通訊,首先需要向伺服器發出連線請求。

connect函式用於完成這項功能,connect函式簽名如下:

#include

/* see notes */

#include

intconnect

(int sockfd,

const

struct sockaddr *addr,

socklen_t addrlen)

;return value

if the connection or binding succeeds, zero is returned. on error,

-1 is returned,

成功返回0,失敗返回-

1,並且將設定errno

說明:connect函式將使用引數sockfd中的套接字連線到引數serv_addr中指定的伺服器。引數addrlen為serv_addr指向的記憶體空間大小。

如果引數sockfd的型別為sock_dgram,serv_addr引數為資料報發往的位址,且將只接收該位址的資料報。如果sockfd的型別為sock_stream或sock_seqpacket,呼叫該函式將連線serv_addr中的伺服器位址。

錯誤資訊:整數巨集

描述13

eacces, eperm

使用者試圖在套接字廣播標誌沒有設定的情況下連線廣播位址或由於防火牆策略導致連線失敗

98eaddrinuse

本地位址處於使用狀態

97eafnosupport

引數serv_add中的位址非合法位址

11eagain

沒有足夠空閒的本地埠

114ealready

套接字為非阻塞套接字,並且原來的連線請求還未完成

9ebadf

非法的檔案描述符

111econnrefused

遠端位址並沒有處於監聽狀態

14efault

指向套接字結構體的位址非法

115einprogress

套接字為非阻塞套接字,且連線請求沒有立即完成

4eintr

系統呼叫的執行由於捕獲中斷而中止

106eisconn

已經連線到該套接字

101enetunreach

網路不可到達

88enotsock

檔案描述符不與套接字相關

110etimedout

連線超時

connect是套接字連線操作,connect操作之後代表對應的套接字已連線,udp協議在建立套接字之後,可以同多個伺服器端建立通訊,而tcp協議只能與乙個伺服器端建立通訊,tcp不允許目的位址是廣播或多播位址,udp允許。當然udp協議也可以像tcp協議一樣,通過connect來指定對方的ip位址、埠。

udp協議經過connect之後,在通過sendto來傳送資料報時不需要指定目的位址、埠,如果指定了目的位址、埠,那麼會返回錯誤。通過udp協議可以給同乙個套接字指定多次connect操作,而tcp協議不可以,tcp只能指定一次connect操作。udp協議指定第二次connect操作之後會先斷口第一次的連線,然後建立第二次的連線。

step1:通過socket建立連線套接字;

step2:通過bind來繫結本地位址、本地埠,當然繫結操作可以不用指定;

招聘程式設計題0x02

python3 coding utf 8 在4x4的棋盤上擺滿了黑白棋子,黑白兩色的位置和數目隨機其中左上角座標為 1,1 右下角座標為 4,4 現在依次有一些翻轉操作,要對一些給定支點座標為中心的上下左右四個棋子的顏色進行翻轉,請計算出翻轉後的棋盤顏色。給定兩個陣列a和f,分別為初始棋盤和翻轉位置...

網路程式設計 connect函式

1 connect描述 定義函式 int connect int sockfd,struct sockaddr serv addr,int addrlen connect函式通常用於客戶端建立tcp連線。返回值 成功則返回0,失敗返回 1,錯誤原因存於errno中。錯誤 ebadf 引數sockfd...

逆向工程 0x02

常用的彙編指令 指令示例 含義說明 movmov eax,ecx eax ecx 將ecx的值存入eax addadd eax,ecx eax ecx 將eax的值加上ecx的值 subsub eax,ecx eax ecx 將eax的值減去ecx的值 incinc eax eax 將eax的值加1...