0

IP アドレスに解決される複数のドメイン名を持つサーバーがあるとします。たとえば、私のサーバーは 10.0.0.33 でserverA.mysite.com、 、serverB.mysite.com、からアクセスできますserverC.mysite.com。次のようなコードでプロセスを実行している場合:

#!/usr/bin/env python

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.listen(5)

while True:
   client, client_addr = server.accept()
   #server_name = <some function>(client)
   #Do Something with the client knowing the value of servername...


server.close()

クライアントによって行われた tcp 接続が目的のものかどうかを判断する方法はありserverA.mysite.comますserverB.mysite.comか?

私の例はpythonですが、python固有の回答は必要ありません。

4

2 に答える 2

1

いいえ、TCP/IP 接続は IP アドレス レベルで機能するため、サーバーがリッスンしている IP アドレスをクライアントがどのように取得したかを判断することはできません。

HTTP は、(1.0 以降) クライアントが元のホスト名を要求データの一部として送信することを要求することで、これを回避します。

于 2012-08-05T23:19:44.687 に答える
0

複数のポートでリッスンしている場合、リッスンINADDR_ANY ("0.0.0.0")していて、クライアントがどのポートに接続しているかを正確に知りたいと思いますか? s.getsocknameの後に使用する必要があるのは非常に簡単ですaccept。したがって、コードは次のようになります

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("0.0.0.0", 10000))
s.listen(5)
while True:
    s2 = s.accept()
    print s2.getsockname()
    s2.close()
于 2015-06-14T13:04:15.927 に答える