0

这是服务器程序

    # Echo server program
    import socket

    HOST = ''                 # Symbolic name meaning all available interfaces
    PORT = 50007              # Arbitrary non-privileged port
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((HOST, PORT))
    s.listen(1)
    conn, addr = s.accept()
    print('Connected by', addr)
    while True:
        data = conn.recv(1024)
        if not data: break
        conn.sendall(data)
    conn.close()

现在,我想知道我使用的端口是否让我们说是 50007,而我在 uni 计算机上的朋友想要使用客户端程序来连接到我。那么他是否也必须打开端口 50007 ?你知道,为了让他和我联系。

这是客户端程序顺便说一句:

    import socket

    HOST = 'daring.cwi.nl'    # The remote host
    PORT = 50007              # The same port as used by the server
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world')
    data = s.recv(1024)
    s.close()
    print('Received', repr(data)
4

2 回答 2

1

uni 网络应该允许到端口 50007 的传出tcp 连接。您的网络应该允许端口 50007 上的传入tcp 连接。

于 2012-09-03T04:49:55.950 回答
0

这将起作用(从 python 套接字的角度来看)。当您的朋友连接到您的套接字(由于 .accept() 调用而“打开”)时,该连接将保持打开状态,直到特别关闭,从而允许您将消息发回。

现在,问题可能出在大学防火墙上,它几乎可以肯定配置为不允许端口 50007 上的出站(从他到您)连接。如果是这种情况,除非您对 uni 防火墙具有管理员访问权限,否则您将不会能够连接。

于 2012-09-03T03:58:58.367 回答