1

私はPythonの初心者で、ほんの数日前にネットワークプログラミングを試し始めました(私もPythonの初心者です)

今、私は自分のコンピューター上で非常に簡単に実行されているきちんとしたクライアントサーバープログラムを見つけましたが、ローカルアドレスを置き換えて、友人にクライアントスクリプトを実行するように言ったとき、それは応答しません。

私のグローバルIPアドレス:120.59.XX.XXX

ipconfigによって返される私のIpv4アドレス:192.168.1.2(ルーターを介してインターネットに接続しています)

私のゲートウェイアドレス:192.168.1.1

使用したポート:1060(このポートをローカルでテストしましたが、使用されていませんでした)

#server.py

import socket
import sys

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

MAX = 65535
PORT = 1060

server.bind(('192.168.1.2', PORT))
print 'Listening at', server.getsockname()
while True:
    data, address = server.recvfrom(MAX)
    print 'The client at', address, 'says', repr(data)
    server.sendto('Your data was %d bytes' % len(data), address)

クライアントコード:

#client.py

import socket
import sys

client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

PORT = 1060
MAX = 65536

client.sendto('Hello Server!', ('120.59.XX.XXX', PORT))
data, address = client.recvfrom(MAX)
print 'The server', address, 'says', repr(data)

コンピューターでserver.pyを起動し、友人にclient.pyを起動するように指示しました。ファイアウォールを介したPythonへの着信接続を許可し、Windowsの着信接続リストに1060ポートを追加しました。

それでも応答せず、理由を理解できません(動的IPアドレスを持っていますが、現在のセッションでは一定のままであるため、機能するはずです。また、1060はよく知られたポートであり、問​​題になることはありませんか? )。

4

2 に答える 2

1

ルーターにポート転送ルールを追加する必要があります。ポート1060から192.168.1.2ポート1060へのようなもの。

于 2012-05-22T15:53:38.067 に答える
1

ルーターにポートフォワードが必要です。これにより、ポート1060のルーターの外部(グローバル)アドレスへの接続がデスクトップIP192.168.1.2ポート1060に転送されます。

于 2012-05-22T15:56:43.870 に答える