Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何让套接字代码发送多行_Python_Python 3.x_Sockets_Server - Fatal编程技术网

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我不知道如何做。