我现在正在学习python一个月,因为我想为我的GameMakerStudio 2游戏编写一个服务器,它不支持线程,我需要用另一种语言编写服务器才能使其可用。 无论如何... https://www.youtube.com/watch?v=WrtebUkUssc -tutorial url
我正在关注本教程,不幸的是我收到的错误是:
/ home / borut / PycharmProjects / Server / venv / bin / python /home/borut/PycharmProjects/Server/Server.py 文件“/home/borut/PycharmProjects/Server/Server.py”,第19行 而真: ^ IndentationError:意外缩进
使用退出代码1完成处理
我在教程中遵循的代码是:
import socket
import sys
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 threaded_client(conn):
conn.send(str.encode('Welcome, type your info\n'))
while True:
data = conn.recv(2048)
reply = 'Server output: ' +data.decode('utf-8')
if not data:
break;
conn.sendall(str.encode(reply))
conn.close()
while True:
conn, addr = s.accept()
print('connected to: '+addr[0]+':'+str(addr[1]))
start_new_thread(threaded_client, (conn,))
谢谢你们的所有答案和提示!
答案 0 :(得分:1)
问题是您的缩进不正确。通过缩进我的意思是
在逻辑开头引出空格(空格和制表符) line用于计算行的缩进级别 turn用于确定语句分组
This link有助于您了解缩进的重要性。
要解决此问题,请使用IDE格式化代码。您可以使用此代码,我已为您修复了缩进。
import socket
import sys
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 threaded_client(conn):
conn.send(str.encode('Welcome, type your info\n'))
while True:
data = conn.recv(2048)
reply = 'Server output: ' +data.decode('utf-8')
if not data:
break
conn.sendall(str.encode(reply))
conn.close()
while True:
conn, addr = s.accept()
print('connected to: '+addr[0]+':'+str(addr[1]))
start_new_thread(threaded_client, (conn,))
答案 1 :(得分:1)
缩进是Python最重要的思考,因为你通知你开始/结束一段代码的方式。
你的第一个
while True:
是前面的一个标签