小编use*_*746的帖子

Errno 98:地址已在使用中-Python套接字

之前曾有人问过这个问题,但对我而言,所有答案都没有帮助。这个问题似乎很简单。我在树莓派上运行TCP服务器,并尝试从另一台计算机连接到它。我有一个自定义类接收器,可将传感器数据通过管道传递到此脚本。

当我关闭在另一台计算机上运行的程序时(套接字先是“ shutdown(2)”,然后是“ close()”),我再也无法重新连接到同一端口了。我试图在两个插槽(1180和1181)之间切换,但这没有用。当我一次通过端口连接时,它将永远消失,直到重新启动TCP服务器为止。我尝试重新启动脚本(使用executl()),但这不能解决我的问题。我告诉套接字它应该重新使用地址,但无济于事。

我可以做的是使用更多端口,但是这需要在RPi上打开更多端口,而我想避免(必须有另一种方法来解决此问题)。

import socket
from receiver import receiver
import pickle
import time
import os
import sys

TCP_IP = ''
TCP_PORT = 1180
BUFFER_SIZE = 1024

print 'Script started'

while(1):
    try:
            print 'While begin'
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
            print 'Socket created'
            s.settimeout(5)
            print 'Trying to bind'
            s.bind((TCP_IP, TCP_PORT))
            print 'bound to', (TCP_IP, TCP_PORT)
            s.listen(1)
            print 'listening for connection'

            conn, addr = s.accept()
            print 'accepted incoming connection'
            s.settimeout(5)
            r = receiver()
            print 'Connection address:', addr
            for …
Run Code Online (Sandbox Code Playgroud)

python sockets tcp

1
推荐指数
1
解决办法
4839
查看次数

标签 统计

python ×1

sockets ×1

tcp ×1