如何避免[Errno 98]地址已在使用中

时间:2019-05-19 21:50:44

标签: python sockets http

HTTP是无状态连接。我正在制作“ HTTP Server”(我是编程新手)。

我想做的是使用POST方法在浏览器和基于python的http服务器之间交换信息。为了使其正常工作,我必须关闭套接字并再次打开它(由于HTTP规范,我知道必须完全关闭连接,然后才能使用GET或POST方法建立与服务器的新连接,再次,我打算发送大文件仅通过POST,因为GET的功能非常有限)

有一种机制可以防止我使用循环来关闭/打开套接字。我不确定它是否属于Unix套接字或Python规范。可能是前一种情况。

如果我设置socket.close()/ socket.receive()循环-我收到错误消息: OSError:[Errno 98]地址已在使用中 我该如何解决困境。 Apache完全没有问题(我了解它在C或C ++中的问题),但是它仍然可能在Unix上使用相同的套接字库。(AFAIK python套接字是C或C ++库的包装器)

我不喜欢http.server的概念,因为它不允许发布没有“ CGI”的帖子,我认为我不需要。在我看来,它的记录也很糟糕。

尝试阅读http.server文档。 试图重新绑定POST方法的端口号,事实证明-不可能。 完成了几个小时的谷歌搜索。

import folium
from folium import plugins
m = folium.Map(
    location=[35.68159659061569, 139.76451516151428],
    zoom_start=16
)

# Lon, Lat order.
lines = [
    {
        'coordinates': [
            [139.76451516151428, 35.68159659061569],
            [139.75964426994324, 35.682590062684206],
        ],
        'dates': [
            '2017-06-02T00:00:00',
            '2017-06-02T00:10:00'
        ],
        'color': 'red'
    },
    {
        'coordinates': [
            [139.75964426994324, 35.682590062684206],
            [139.7575843334198, 35.679505030038506],
        ],
        'dates': [
            '2017-06-02T00:10:00',
            '2017-06-02T00:20:00'
        ],
        'color': 'blue'
    },
    {
        'coordinates': [
            [139.7575843334198, 35.679505030038506],
            [139.76337790489197, 35.678040905014065],
        ],
        'dates': [
            '2017-06-02T00:20:00',
            '2017-06-02T00:30:00'
        ],
        'color': 'green',
        'weight': 15,
    },
    {
        'coordinates': [
            [139.76337790489197, 35.678040905014065],
            [139.76451516151428, 35.68159659061569],
        ],
        'dates': [
            '2017-06-02T00:30:00',
            '2017-06-02T00:40:00'
        ],
        'color': '#FFFFFF',
    },
]

features = [
    {
        'type': 'Feature',
        'geometry': {
            'type': 'LineString',
            'coordinates': line['coordinates'],
        },
        'properties': {
            'times': line['dates'],
            'style': {
                'color': line['color'],
                'weight': line['weight'] if 'weight' in line else 5
            }
        }
    }
    for line in lines
]

plugins.TimestampedGeoJson({
    'type': 'FeatureCollection',
    'features': features,
}, period='PT1M', add_last_point=True).add_to(m)

display(m)

需要使'socket.close()'循环不会产生错误“ OSError:[Errno 98]地址已在使用中”。

0 个答案:

没有答案