Python-eoferor与套接字

Python-eoferor与套接字,python,sockets,Python,Sockets,在学习Python中的套接字时,我遇到了一个问题,下面是代码: server.py import socket from threading import Thread import time def client_thread(c): while True: data = c.recv(1024) if not data: break print('Data received from client: ' + d

在学习Python中的套接字时,我遇到了一个问题,下面是代码:

server.py

import socket
from threading import Thread
import time

def client_thread(c):
    while True:
        data = c.recv(1024)
        if not data:
            break
        print('Data received from client: ' + data.decode('utf-8'))

        time.sleep(1)
        c.send('Thank you!'.encode('utf-8'))
        break

    c.close()
    print('CONNECTION ENDED')
    time.sleep(1)

host = socket.gethostname()
port = 5000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

s.bind((host, port))

print('Waiting for connection...')
s.listen(5)

while True:
    c, addr = s.accept()
    print('Connected to: ' + str(addr))

    Thread(target=client_thread, args=(c,)).start()

s.close()
client.py

import socket
import time

host = socket.gethostname()
port = 5000

time.sleep(2)
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

c.connect((host, port))
print('Connected!')

time.sleep(1)

msg = input('Send data to server: ')
c.send(msg.encode('utf-8'))

while True:
    data = c.recv(1024)
    if not data:
        break
    print('Data received from server: ' + data.decode('utf-8'))

c.close()
我不确定如何同时运行两个客户端,因此我在终端中尝试了此方法(如果方法不正确,请更正):

然后我得到一个错误:

Waiting for connection...
Connected to: ('127.0.0.1', 43952)                          
Connected!                                 
Connected to: ('127.0.0.1', 43953)                          
Connected!                            
Send data to server: Send data to server: Traceback (most recent call last):                                              
 File "client.py", line 16, in <module>                     
  msg = input('Send data to server: ')                    
EOFError: EOF when reading a line                          
CONNECTION ENDED
正在等待连接。。。
连接到:('127.0.0.1',43952)
有联系的!
连接到:('127.0.0.1',43953)
有联系的!
将数据发送到服务器:将数据发送到服务器:回溯(最近一次呼叫最后一次):
文件“client.py”,第16行,在
msg=input('将数据发送到服务器:')
EOF:读取一行时的EOF
连接结束
我认为同时运行两个input()有问题


如何在同一台设备上同时运行多个客户端?

您可以运行多个终端并从中运行客户端。@FarbodShahinfar,您是如何做到的?如果您使用的是macOS或带有GUI的桌面linux系统,您的终端应该能够打开任意多个窗口,但如何做到这一点(a)是超级用户的问题,不存在堆栈溢出,并且(b)在不知道您使用的平台/发行版/终端等的情况下无法回答。@abarnert我实际上在Android上使用终端仿真器,我不确定它是否可以做到这一点。我正在使用的android IDE是Pydroid3,因为我现在没有我的comp,我不知道你的android终端编辑器是否能做到,但你可以在…上搜索/寻求帮助,无论适合android超级用户的SE站点是什么。或者您可以始终使用
screen
tmux
在一个终端内运行多个独立的shell会话,但我猜使用手机键盘不会有多大乐趣…
Waiting for connection...
Connected to: ('127.0.0.1', 43952)                          
Connected!                                 
Connected to: ('127.0.0.1', 43953)                          
Connected!                            
Send data to server: Send data to server: Traceback (most recent call last):                                              
 File "client.py", line 16, in <module>                     
  msg = input('Send data to server: ')                    
EOFError: EOF when reading a line                          
CONNECTION ENDED