如何通过SocketHandle在Delphi中获取IP地址及端口信息?

更新于
2026-10-05 02:51:46
0阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计535个文字,预计阅读时间需要3分钟。

要从套接字句柄中获取sockaddr_in结构体,以便获取端口号和地址,可以按照以下步骤进行:

cfunction GetSocketPort(s : TSocket) : Integer;var Addr : sockaddr_in; len : Integer;begin len :=sizeof(Addr); getsockname(s, @Addr, len); Result :=ntohs(Addr.sin_port);end.

这段代码定义了一个函数`GetSocketPort`,它接收一个套接字句柄`s`作为参数,并返回该套接字的端口号。在函数内部,我们首先定义了一个`sockaddr_in`类型的变量`Addr`和一个整型变量`len`。`len`用于指定`Addr`的大小。

然后,我们使用`getsockname`函数获取套接字`s`的本地地址信息,该信息存储在`Addr`变量中。`getsockname`函数的第三个参数是地址结构的长度,这里我们传递了`sizeof(Addr)`。

最后,我们使用`ntohs`函数将网络字节序的端口号转换为主机字节序,并返回这个端口号作为函数的结果。

阅读全文

本文共计535个文字,预计阅读时间需要3分钟。

要从套接字句柄中获取sockaddr_in结构体,以便获取端口号和地址,可以按照以下步骤进行:

cfunction GetSocketPort(s : TSocket) : Integer;var Addr : sockaddr_in; len : Integer;begin len :=sizeof(Addr); getsockname(s, @Addr, len); Result :=ntohs(Addr.sin_port);end.

这段代码定义了一个函数`GetSocketPort`,它接收一个套接字句柄`s`作为参数,并返回该套接字的端口号。在函数内部,我们首先定义了一个`sockaddr_in`类型的变量`Addr`和一个整型变量`len`。`len`用于指定`Addr`的大小。

然后,我们使用`getsockname`函数获取套接字`s`的本地地址信息,该信息存储在`Addr`变量中。`getsockname`函数的第三个参数是地址结构的长度,这里我们传递了`sizeof(Addr)`。

最后,我们使用`ntohs`函数将网络字节序的端口号转换为主机字节序,并返回这个端口号作为函数的结果。

阅读全文