9.3. connect()
使用 socket 連線到伺服器
函式原型
說明
一旦你用 socket() call 建立了一個 socket descriptor 之後,你可以使用已知的 connect() system call 將這個 socket 連線到遠端伺服器。你該需做的是將 socket descriptor 與要連線的伺服器 address 傳遞給 connect()(喔,還有 address 的長度,這個通常會傳給這類的函式)。
通常這項資訊會透過呼叫 getaddrinfo() 取得,但是如果你願意,你也可以自行填寫 struct sockaddr。
若你尚未對這個 socket descriptor 呼叫 bind(),則會自動幫你綁定到你的 IP address 與一個隨機的 local port(本地連接埠)。如果你不是 伺服器,這樣還蠻不錯的,因為你真的可以不用管理的 local port 是多少了;你只要注意遠端的 port,這個可以在 serv_addr 參數中設定。如果你有需要將 client socket 指定 IP address 與 port,那麼你可以選擇呼叫 bind() 來處理,不過這種情況是很少見的。
一旦 socket 已經用 connect() 完成連線,你就可以隨意使用這個 socket 來 send() 與 recv() 資料到你心裡想的地方。
特別注意:如果你用 connect() 與 SOCK_DGRAM UDP socket 連線到遠端主機,若你願意,你也可以像使用 sendto() 與 recvfrom() 那樣來使用 send() 與 recv()。
傳回值
成功時傳回零,或者發生錯誤時傳回 -1(並設定相對應的 errno)。
範例
參考
socket(), bind()
Last updated