Python 如何让套接字代码发送多行
我正在尝试创建一个套接字服务器连接,向客户端发送手动输入命令Python 如何让套接字代码发送多行,python,python-3.x,sockets,server,Python,Python 3.x,Sockets,Server,我正在尝试创建一个套接字服务器连接,向客户端发送手动输入命令 import socket import time inputdata = 0 #test_data = bytes(inputdata) s = socket.socket() s.bind(('localhost', 667)) s.listen() c, addr = s.accept() while True: inputdata = input("Enter command: ") t
import socket
import time
inputdata = 0
#test_data = bytes(inputdata)
s = socket.socket()
s.bind(('localhost', 667))
s.listen()
c, addr = s.accept()
while True:
inputdata = input("Enter command: ")
test_data = bytes(inputdata)
if(test_data):
c.send(test_data)
time.sleep(.1)
我可以向它发送1个命令/行,但无法获取input()来提示我输入第二个命令,然后再发送它。我可以做一次,但不能做两次或更多
我试着给它一个if语句和另一个while循环。两者都没有产生预期的结果
import socket
import time
inputdata = input("Enter command: ")
test_data = bytes(inputdata, encoding='utf-8')
s = socket.socket()
s.bind(('localhost', 667))
s.listen()
while True:
c, addr = s.accept()
if(test_data):
c.send(test_data)
time.sleep(.1)
如果我把input()放在循环中,我的代码就会挂起
import socket
import time
inputdata = 0
#test_data = bytes(inputdata)
s = socket.socket()
s.bind(('localhost', 667))
s.listen()
while True:
c, addr = s.accept()
inputdata = input("Enter command: ")
test_data = bytes(inputdata)
if(test_data):
c.send(test_data)
time.sleep(.1)
如何让代码向客户端发送多个input()命令/行?accept()
不应该在循环中,因为它等待来自客户端的另一个连接
import socket
import time
inputdata = 0
#test_data = bytes(inputdata)
s = socket.socket()
s.bind(('localhost', 667))
s.listen()
c, addr = s.accept()
while True:
inputdata = input("Enter command: ")
test_data = bytes(inputdata)
if(test_data):
c.send(test_data)
time.sleep(.1)
accept()
不应该在循环中,因为它等待来自客户端的另一个连接
import socket
import time
inputdata = 0
#test_data = bytes(inputdata)
s = socket.socket()
s.bind(('localhost', 667))
s.listen()
c, addr = s.accept()
while True:
inputdata = input("Enter command: ")
test_data = bytes(inputdata)
if(test_data):
c.send(test_data)
time.sleep(.1)
将提示信息放入循环中。为什么这不明显?正如您所说,要重复
input()
,您必须将其放入循环中。顺便说一句,TCP套接字没有消息边界。客户端无法知道一个命令在哪里结束,下一个命令在哪里开始。您需要实现一个应用程序协议来添加此信息。@mkrieger1如果我将input()放在循环中,我甚至无法让它正确地提示我一次。@Barmar我不知道如何做。请将提示信息放在循环中。为什么这不明显?正如您所说,要重复input()
,您必须将其放入循环中。顺便说一句,TCP套接字没有消息边界。客户端无法知道一个命令在哪里结束,下一个命令在哪里开始。您需要实现一个应用程序协议来添加此信息。@mkrieger1如果我将input()放在循环中,我甚至无法让它正确地提示我一次。@Barmar我不知道如何做。