实现TCPServer过程中遇到的问题

实现TCPServer过程中遇到的问题
上代码,圈出来的代码很不明白,关闭请求为什么要调用request.shutdown()和request.close()两个方法?shutdown和close意思差不多啊,不都是关闭吗?还有就是这两个方法的源码在哪里呢?(小白提问,表述的不专业,我说的源码指的就是在pycharm中按住ctrl键然后点击一个方法,可以跳转到另一个定义这个方法的文件中去,比如我按住ctrl然后点击上面的self.socket.listen就跳转到socket.pyi文件里面def listen那里去了)

还有个疑问,就是接收请求那里,return了self.socket.accept(),这个accept源码我看了是返回一个代表这个连接的socket对象,还有一个客户端的地址实现TCPServer过程中遇到的问题
因为while True里面的接收请求代码是:
request, client_address = self.get_request()
是否可以理解位这个request就是指代的accept函数返回回来的socket对象?那既然request就是这个socket,那我第1问里面的问题,request.shutdown()和request.close()不就是调用socket.shutdown()和socket.close()吗,也就是说这个shutdown和close是socket里面定义好的?我按住ctrl然后点击socket,跳转到
实现TCPServer过程中遇到的问题
这里有定义shutdown,但是怎么就这几行,后面还有...??省略号????还能这样操作??
看到左边的蓝色,我点了一下,又打开一个文件
实现TCPServer过程中遇到的问题
这个ssl.py又是什么鬼?怎么close的源码在这里面??

乱了乱了,看到这里,一层套一层,我都看不下去了T.T

各位大佬帮帮忙,怎么才能学明白TCPServer这个类啊??


回答:

  1. 遇到问题参考官方文档是最有效的

    socket.accept()
    Accept a connection. The socket must be bound to an address and listening for connections. The return value is a pair (conn, address) where conn is a new socket object usable to send and receive data on the connection, and address is the address bound to the socket on the other end of the connection.
    close() releases the resource associated with a connection but does not necessarily close the connection immediately. If you want to close the connection in a timely fashion, call shutdown() before close().

  2. pyi 是stub的interface定义文件主要用在类型提示上,源代码是c代码,所以你看不到,想看直接去看cpython的socket代码

  3. 你点的那个蓝色的icon是说明这个方法被别的类overwrite过了


回答:

我的建议是先点到为止,弄清接口用法,测试接口。
想学习网络编程,我觉得下面的书不应该绕过,至少要过一遍
《TCP/IP详解》卷一卷二
《Unix环境高级编程》
《Unix网络编程》

以上是 实现TCPServer过程中遇到的问题 的全部内容, 来源链接: utcz.com/p/937702.html

回到顶部