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 で、大学のコンピューターにいる友人が私に接続するためにクライアント プログラムを使用したいと思っているかどうか疑問に思っていました。次に、ポート 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 でのアウトバウンド (彼からあなたへの) 接続を許可しないようにほぼ確実に構成されています。接続できます。

于 2012-09-03T03:58:58.367 に答える