- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何从套接字句柄获取关联的 sockaddr_in
以便从中获取端口和地址?或者还有其他关于如何从 SocketHandle 获取 IP 和端口的信息吗?
例如:
function GetSocketPort ( s : TSocket ) : Integer;
var
Addr : sockaddr_in;
begin
// Get sockaddr_in from a socket
end;
function GetSocketAddress ( s : TSocket ) : String;
var
Addr : sockaddr_in;
begin
// Get sockaddr_in from a socket
end;
function ConnectToHost (Host : pchar; Port : Integer) : TSocket;
var
Addr : sockaddr_in;
begin
Addr.sin_family := AF_INET;
Addr.sin_port := htons(Port);
result := Socket(AF_INET, 1, 6);
Addr.sin_addr.S_addr := INET_ADDR(Host);
if not( (Connect(result, Addr, SizeOf(Addr)) = 0) ) then result := 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MySocket : TSocket;
begin
MySocket := ConnectToHost ('127.0.0.1', 8080);
if MySocket <> 0 then begin
// GetSocketAddress (MySocket);
// GetSocketPort (MySocket);
end;
end;
最佳答案
您可以使用getsockname
本地端口和地址以及 getpeername
的函数像这样的远程端口
function GetLocalSocketPort ( s : TSocket ) : Integer;
var
Addr : TSockAddrIn;
Size: integer;
begin
Size := sizeof(Addr);
getsockname(s, Addr, Size);
Result := ntohs(Addr.sin_port);
end;
function GetLocalSocketAddress ( s : TSocket ) : String;
var
Addr : TSockAddrIn;
Size: integer;
begin
Size := sizeof(Addr);
getsockname(s, Addr, Size);
Result := inet_ntoa(Addr.sin_addr);
end;
function GetRemoteSocketPort ( s : TSocket ) : Integer;
var
Addr : TSockAddrIn;
Size: integer;
begin
Size := sizeof(Addr);
getpeername(s, Addr, Size);
Result := ntohs(Addr.sin_port);
end;
function GetRemoteSocketAddress ( s : TSocket ) : String;
var
Addr : TSockAddrIn;
Size: integer;
begin
Size := sizeof(Addr);
getpeername(s, Addr, Size);
Result := inet_ntoa(Addr.sin_addr);
end;
关于delphi - 从 SocketHandle 获取 IP 和端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17846403/
我正在使用 SocketHandler 实现 python logging 模块来记录来自多台远程计算机的消息。 客户端部分: ...... if self.loggerHost ==
我有一个在 514 端口工作的 Syslog 服务器(接收日志事件并存储在文件中)。Syslog服务器运行良好,因为通过路由器进行了测试,配置了路由器的Syslog服务器的IP和端口,并且路由器将日志
在我的 Python 3 代码中,我有一个这样设置的记录器: class TmpQListener(logging.handlers.QueueListener): def dequeue(s
如何从套接字句柄获取关联的 sockaddr_in 以便从中获取端口和地址?或者还有其他关于如何从 SocketHandle 获取 IP 和端口的信息吗? 例如: function GetSocket
我的 Web 应用程序在多个 Apache 实例上运行,因此我遇到了多进程日志记录问题。我目前正在使用 SocketHandler 登录到使用 SocketServer 的守护进程,然后将日志写入单个
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
做一些天真的事情,比如: SocketHandler socketHandler=new SocketHandler(host,service); socketHandler.setLevel(Lev
我是一名优秀的程序员,十分优秀!