使用套接字进行以太网通信的最佳实践

时间:2015-12-11 10:21:18

标签: python sockets networking ethernet

当使用套接字与远程硬件通信时,我有一个关于最佳实践的相当普遍的问题:在每个消息发送或保持打开后是否应关闭套接字?

为了说明这个问题:我使用python(和socket)与远程硬件接口。通常,我会每隔30秒左右向设备发送一个命令,接收回复然后等待~30秒。

目前我正在做:

    # Open socket
    self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.sock.settimeout(10)
    self.sock.connect((self.host_ip_address, self.port))

    # Send Message
    self.sock.send(my_command)

    # Receive Reply
    data = self.sock.recv(1024)

    # Close socket
    self.sock.shutdown(socket.SHUT_RDWR)
    self.sock.close()

我想知道这是否可取,或者我应该在设备会话期间(例如~1小时)简单地打开插座。这会很健壮吗?

任何提示/指示都欢迎致谢!

1 个答案:

答案 0 :(得分:1)

只要您通过套接字不时交换数据,这就很健壮。如果没有,防火墙/ NAT可以决定TCP连接是否中断并停止路由TCP数据包。