Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python、PyCharm和Windows中的UDP大数据包碎片_Python_Sockets_Networking - Fatal编程技术网

Python、PyCharm和Windows中的UDP大数据包碎片

Python、PyCharm和Windows中的UDP大数据包碎片,python,sockets,networking,Python,Sockets,Networking,我现在正在学习网络和阅读《Python网络编程基础》一书。当我在windows中使用PyCharm学习套接字和网络编程过程时,我在书中跟踪UDP数据包碎片代码,发现模块(in)中的一个是linux系统中的默认软件包 我想问: 包中的是关于什么的 其他哪些参数可用于替换.IP\u MTU\u DISCOVER、IN.IP\u PMTUDISC\u DO、IN.IP\u MTU中的 以下是本书提供的代码: import IN, argparse, socket if not hasattr(IN,

我现在正在学习网络和阅读《Python网络编程基础》一书。当我在windows中使用PyCharm学习套接字和网络编程过程时,我在书中跟踪UDP数据包碎片代码,发现
模块(in)
中的一个是linux系统中的默认软件包

我想问:

  • 包中的
    是关于什么的

  • 其他哪些参数可用于替换.IP\u MTU\u DISCOVER、IN.IP\u PMTUDISC\u DO、IN.IP\u MTU中的

  • 以下是本书提供的代码:

    import IN, argparse, socket
    
    if not hasattr(IN, 'IP_MTU'):
        raise RuntimeError('cannot perform MTU discovery on this combination of operating system and Python distribution')
    
    def send_big_datagram(host, port):
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        sock.setsockopt(socket.IPPROTO_IP, IN.IP_MTU_DISCOVER, IN.IP_PMTUDISC_DO)
        sock.connect((host,port))
        try:
            sock.send(b'#'*65000)
        except socket.error:
            print('Alas, the datagram did not make it')
            max_mtu = sock.getsockopt(socket.IPPROTO_IP, IN.IP_MTU)
            print('The big datagram was sent!')
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(description='Send UDP packet to get MTU')
        parser.add_argument('host', help='the host to which to target the packet')
        parser.add_argument('-p', metavar='PORT', type=int, default=1060, help='UDP port (default 1060)')
    
        args = parser.parse_args()
        send_big_datagram(args.host, args.p)
    

    来自:“要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于堆栈溢出来说是非主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。”你应该编辑你的问题,删除其中要求书籍推荐的部分。正如你所说的,你对这个问题有什么想法吗?不过,你要求的是工具推荐,而不是说明问题。IN模块有什么困难?IN模块是Linux系统中的默认软件包,Windows中不存在。我要求在Windows系统中使用模块的替代方案,但不建议使用工具。请仔细看一下描述。我确实提到了用于更换模块内组件的参数。