3
我已经做了一些网络Python编程的这些日子,想确认的流程,我认为发生在客户端和服务器之间:Socket编程在Python - 实际的远程端口
- 的服务器监听给定 播发端口(9999)
- 客户端通过创建一个新的套接字(例如1111)
- 的服务器接受该客户机请求,并自动产生一个新的套接字连接到服务器(????)现在将处理客户端和服务器之间的通信
正如你可以看到,在上述流程中有3个插座参与:
- 监听到客户端的服务器套接字
- 客户端
- 插座催生了插座被催生服务器来处理客户端
我知道获得前两个插座(9999和1111)的端口,但不知道如何获得与客户端通信的“真实”端口E服务器一面。我片断正在使用现在的问题是:
def sock_request(t):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 9999))
print('local sock name: ' + str(s.getsockname()))
print('peer sock name: ' + str(s.getpeername()))
s.send('a' * 1024 * int(t))
s.close()
上获得这实际上与客户端通信的服务器上的“端口”号的任何帮助,将不胜感激。 TIA。
五条信息:源地址,源端口,目的地址,目的端口,协议。 – 2011-03-16 20:13:10
由于我们谈论的是TCP连接,因此协议是隐含的。在IP级别,协议是有区别的 - 也就是说,您可以在同一本地/远程地址/端口组合之间使用TCP和UDP。 – dty 2011-03-16 21:17:37
@dty:好的,所以如果我弄明白了,四部分元组唯一标识每个“TCP”数据包?我从来没有做过汇编或低级编程,但没有与客户端通信的相同“端口”*和*聆听新请求阻塞端口?这是否意味着我的第3步错了(服务器为客户端分配一个新的套接字)? – sasuke 2011-03-17 05:25:12