Я пытаюсь создать сервер Python и получить к нему доступ через браузер с помощью любого интернет-соединения из любой точки мира. В настоящее время у меня есть следующий код, который я получил от учебников YouTube:
import socket
from _thread import *
host=''
port=5555
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.bind((host,port))
except socket.error as e:
print(str(e))
s.listen(5)
print("Waiting for a connection")
def threadedClient(conn):
conn.send(str.encode('Welcome, type your info\n'))
storeStr = 'Server Output:'
while True:
data = conn.recv(2048)
reply = data.decode('utf-8')
if not data:
break
for x in reply:
if x=='\n':
conn.sendall(str.encode(storeStr))
storeStr = 'Server Output:'
else:
storeStr=storeStr+reply
print(storeStr)
conn.close()
while True:
conn, addr = s.accept()
print('connected to:'+addr[0]+':'+str(addr[1]))
start_new_thread(threadedClient,(conn,))
Используя этот код, я могу подключаться к серверу и взаимодействовать с ним через командную строку. Однако попытка подключения через браузер приводит к:
GET / HTTP/1.1
Host: 192.168.1.56:5555
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/67.0.3396.87 Safari/537.36
Accept:
text/html,application/xhtml+xml,
application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,en-GB;q=0.8
Unhandled exception in thread started by <function threadedClient at
0x0000027B86E0C2F0>
Я попытался изменить строки, отправляемые на более HTTP-подобные строки, такие как «POST / HTTP / 1.1» или «Test», но это ничего не меняет.
Кроме того, я настроил переадресацию портов для своего ноутбука на своем маршрутизаторе, и мне было интересно, нужно ли предпринимать дальнейшие действия для работы WAN. Спасибо!