首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Beej's Guide to Network Programming 系列第17篇:getpeername() 獲取對端地址

     編輯:關於C語言

5.10 getpeername() —— 誰在連線的另一端?

這個函數非常簡單,簡單到作者都不想單獨列一節,但為了完整性仍予以介紹。getpeername() 用於獲取已連接流式套接字(TCP)對端的地址信息。

函數原型

#include <sys/socket.h>

int getpeername(int sockfd, struct sockaddr *addr, int *addrlen);

參數說明:

  • sockfd:已連接的流式套接字描述符。
  • addr:指向 struct sockaddr(或 struct sockaddr_in)的指針,用於存儲對端地址信息。
  • addrlen:指向 int 的指針,初始值為 sizeof(struct sockaddr),返回時包含實際地址長度。

返回值:成功返回 0,失敗返回 -1 並設置 errno。

後續處理

獲得對端地址後,可使用 inet_ntoa() 轉換 IP 字符串,或用 gethostbyaddr() 獲取主機名。但無法直接獲取對端用戶帳號(除非對方運行 ident 守護進程,參見 RFC-1413)。

摘自 xiaobin_HLJ80 的專欄

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved