Почему сервер с Python-сокетом работает неправильно с публичным IP? - PullRequest
0 голосов
/ 03 октября 2019

У меня есть сервер, на котором работает Ubuntu 16.04. Теперь я хочу установить сервер Python-сокета с публичным IP-адресом, таким как 114.xx.xx.xx.

# server.py
# -*- coding: utf-8 -*-

import socket

sk = socket.socket()
sk.bind(('114.xx.xx.xx', 6000))
sk.listen(10)

while True:
    conn, addr = sk.accept()
    data = conn.recv(1024)
    print(data.decode())

Здесь я использую порт 6000, который успешно открывается.

root@littleye233:~/Temp# netstat -anp | grep 6000
tcp        0      0 x.x.x.x:6000            x.x.x.x:*               LISTEN      800/Xorg 
tcp6       0      0 x:x:x:6000                 x:x:x:*                    LISTEN      800/Xorg 

Я также попробовал порт 80, и сервер тоже работает неправильно.

root@littleye233:~/Temp# python3 server.py
Traceback (most recent call last):
  File "server.py", line 6, in <module>
    sk.bind(('114.xx.xx.xx', 6000))
OSError: [Errno 99] Cannot assign requested address

Я слышал, что python-сокет может принимать и отправлять TCP-пакеты. Но почему сервер работает неправильно с публичным IP ? Есть ли способ или модуль для решения проблемы? Большое спасибо!

...