套接字:本地服务器端口作为.search-agent

socket: local server port as .search-agent

我是套接字编程的新手,我是 运行 服务器和客户端,示例来自 python 文档,本地

服务器:

import socket

HOST_PORT = ("127.0.0.1", 1234)

socket_obj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_obj.bind(HOST_PORT)
socket_obj.listen(3)
print(f"server running at {HOST_PORT}")

while True:
    client_soc, addr = socket_obj.accept()
    print(f"client: {addr}")
    client_soc.send(b"hell0 from server")

客户:

import socket

SERVER_HOST_PORT = ("127.0.0.1", 1234)

socket_obj = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_obj.connect(SERVER_HOST_PORT)
#data = socket_obj.recv(1024)

while True:
    data = socket_obj.recv(10)
    print(f"got data from server: {data}")

我试图通过 netstat

找出客户端和服务器套接字的详细信息

客户端地址显示为 localhost.58724,这是正确的,但服务器显示为 localhost.search-agent(端口 1234 上的 运行)

为什么来的是.search-agent而不是服务器的端口号(1234)

---> UPDATE(按端口查找进程)

$ lsof -i tcp:1234

    COMMAND  PID   USER   FD   TYPE            DEVICE SIZE/OFF NODE NAME
    Python  3013 naveen    3u  IPv4 0xff691590c7ecdff      0t0  TCP localhost:search-agent (LISTEN)

我能够在 macOS 11.4 上重现这个,发生这种情况的原因是,至少在 Linux 和 macOS 上,search-agent 是端口 [=11 的符号名称=],也就是通常在这些系统上使用该端口的进程。

运行 netcat-n 以显示实际数字而不是符号名称,例如127.0.0.1:1234 而不是 localhost:search-agent.