python - Python客户端一个接一个连接不同的服务器
问题描述
我是 python 新手,我正在用 Python 编写套接字代码。我有三台不同的机器(机器 A、机器 B 和机器 c),IP 地址分别为 1.1.1.1、IPb 和 IPc。
现在,我希望我的机器 A 运行一个线程作为服务器 A,一个客户端线程作为客户端 A。相同的代码将在机器 B 和 C 中运行。客户端 A 将检查服务器 B 是否正在侦听。如果服务器 B 未在侦听,则尝试连接到服务器 c。如果服务器 c 没有在监听,那么连接到服务器 A 并做一些事情。
我的代码如下:
import os, sys, socket, time, threading
Host = 1.1.1.1
PORT = 1111
threads = []
threadss =[]
def server():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
while 1:
print ("Listening")
s.listen()
conn, addr = s.accept()
with conn:
print("connected")
data = conn.recv(1024)
if data == b'please sleep':
time.sleep(300)
if data == b'do something':
print("do something")
def client():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
while 1:
try:
s.connect((IPaddress of Machine B, Port of machineB))
except Exception as inst:
print("machine B not ready")
try:
s.connect((IP address of Machine C, Port of MAchine c))
except Exception as inst:
print("machine c not ready"))
s.connect(('1.1.1.1', 1111))
s.sendall(b'do something')
serv = threading.Thread( target=server)
threads.append(serv)
serv.start()
print("starting the thread serv")
time.sleep(3)
cli=threading.Thread(target = client)
threadss.append(cli)
cli.start()
print("client started")
我无法做到这种情况:客户端 A 检查服务器 B 和服务器 c 是否有任何一个处于活动状态,然后它会向服务器 A 发送消息以休眠。
提前感谢您的帮助!!
解决方案
推荐阅读
- video-streaming - UbikLoadPack:视频流负载测试以及如何从多个 IP 发出请求
- actions-on-google - 如何获取与对话流相关联的谷歌帐户的用户名/ID
- sql - 经典 ASP Microsoft SQL Server Native Client 11.0 错误 '80040e14' 用户登录失败,但不是我指定的
- google-app-engine - 如何使 HTTP 调用到达 App Engine 负载平衡器后面的所有实例?
- mysql - 从 Yii2 模型重新创建数据库表
- javascript - 将文本框输入传递到另一个页面时出现问题 - 特别是 javascript 和 html 中的名字和姓氏
- python - 尝试构建逻辑模型时出现类型错误
- perforce - Perforce,我如何确定上次同步的更改列表
- angular - Angular 4 渲染子选择器将列对齐中断到我的表中
- python - 在 Matplotlib 中使用 LineCollection 时是否可以设置透明度?