Python 2.7 pythontcpserver不循环
大家好,谢谢你们复习我的问题 我是python新手,我在一本书中学习了一个教程,在这本书中我擅长制作Python 2.7 pythontcpserver不循环,python-2.7,tcp,Python 2.7,Tcp,大家好,谢谢你们复习我的问题 我是python新手,我在一本书中学习了一个教程,在这本书中我擅长制作tcpserver 现在它是为Python2.x编写的,我知道我应该为3.x编写它,但我想从书中对它的解释开始 这是他的普通tcp服务器代码: import socket import threading bind_ip = "0.0.0.0" bind_port = 9999 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpserver
现在它是为Python2.x编写的,我知道我应该为3.x编写它,但我想从书中对它的解释开始
这是他的普通tcp服务器代码:
import socket
import threading
bind_ip = "0.0.0.0"
bind_port = 9999
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bind_ip,bind_port))
server.listen(5)
print "[*] Listning on %s:%d" % (bind_ip,bind_port)
#this is our client-handling thread
def handle_client(client_socket):
#print out what the client sends
request = client_socket.recv(1024)
print "[*] Recived: %s" % request
#send back a packet
client_socket.send("ACK!")
client_socket.close()
while True:
client,addr = server.accept()
print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1])
#spin up our client thread to handle incomming data
client_handler = threading.Thread(target=handle_client,args=(client,))
client_handler.start()
现在,当我从Python2.7.x运行该代码时,它失败了,这给了我一个无效的语法%
因此,我更改了一些行,以支持.format,因为我在谷歌上找到的内容不再支持%I
print "[*] Listning on {0}:{1}".format(bind_ip,bind_port)
print "[*] Recived: {0}".format(request)
print "[*] Accepted connection from: {0}:{1}".format(addr[0],addr[1])
当我现在运行它时,它会吐出:[*]listing on 0.0.0:9999
很好,对吧?否,因为由于某种原因,我无法确定while循环是否不执行,因此它在一秒钟后脱离.py,因此我无法使用我的tcp客户端脚本测试tcp服务器脚本
有人能告诉我出了什么问题吗?您应该启动函数的线程输出端。如果注意到该标识,则while
循环是handle_client
的一部分,因此在打印“Listning on…”时,您会看到脚本退出
显示带有回溯的完整错误消息。另外,%
格式设置仍然受支持,尽管格式设置是一种新的方式。很抱歉浪费您的时间问题是我的行距我通常在php中编程,不区分大小写,因为它被括在括号中
def handle_client(client_socket):
#Function defnition
while True:
client,addr = server.accept()
print "[*] Accepted connection from: %s:%d" % (addr[0],addr[1])
client_handler = threading.Thread(target=handle_client,args=(client,))
client_handler.start()