У меня есть сервер, на котором работает 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 ? Есть ли способ или модуль для решения проблемы? Большое спасибо!