python - 我正在设置一个 TCP 客户端/服务器程序,用于区分 Python 3 中的 X 和 Y 两个客户端。我在处理线程时遇到了困难
问题描述
知道如何让我的客户端和服务器程序等到与服务器建立两个客户端连接之后,然后允许按连接顺序将句子输入到两个客户端程序中吗?这是我到目前为止所得到的。
# server.py
from socket import *
from _thread import *
import threading
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_STREAM)
serverSocket.bind(('',serverPort))
serverSocket.listen(2) # Want to connect 2 clients
print('The server is waiting to receive 2 connections.... \n')
def ClientThread(X,Y):
active = True
while active:
sentenceX = X.recv(1024).decode()
sentenceY = Y.recv(1024).decode()
capSentenceX = sentenceX.upper()
catSentenceY = sentenceY.upper()
while True:
connectionSocketX, addrX = serverSocket.accept()
print('Accepted first connection, calling it connection X')
connectionSocketY, addrY = serverSocket.accept()
print('Accepted second connection, calling it connection Y\n')
print('Waiting to receive message from client X and client Y....')
ClientThread(connectionSocketX, connectionSocketY)
connectionSocketX.send(capitalizedSentenceX.encode())
connectionSocketY.send(capitalizedSentenceY.encode())
connectionSocketX.close()
connectionSocketY.close()
# Client.py
from socket import *
serverName = 'localhost'
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
sentence = input('Input lowercase sentence:')
clientSocket.send(sentence.encode())
modifiedSentence = clientSocket.recv(1024)
print('From Server: ', modifiedSentence.decode())
clientSocket.close()
解决方案
推荐阅读
- php - 为什么在控制台中回显函数打印数据?
- php - 对变量中的每一行求和 DateDiff 和输出级联(SQL-Server)(PHP)
- javascript - 上传base64 pdf
- java - 有没有更好的方法来编写 s.substring 以便我的代码在有一个字符时不会失败
- css - Rails:资产管道没有持久化。CSS 中的更改不会出现在浏览器中
- ruby-on-rails - 保证模型关联到同一个父级
- jquery - 如何在引导轮播中启用自动滑动,每 10 秒有 2 张图像和 1 个视频?
- sql - JSONB 嵌套数组查询 - 检查属性是否存在
- asp.net - 来自路由和查询字符串的 ASP.NET Core 模型绑定
- ansible - 需要遍历包含主机名的文件并在任务中使用该值