首页 > 解决方案 > 如何将消息从客户端发送到服务器套接字

问题描述

您好我正在尝试检测 USB 是否连接到客户端。我的逻辑是,如果添加新磁盘意味着在客户端上添加新设备,如果从客户端删除 USB 意味着设备已从客户端删除,则获取磁盘总数,所以我继续循环检查客户端显示总计 = 1 或总计 = 2 , 1 表示只有 1 个磁盘可用 2 表示添加了新设备,依此类推。它工作正常,但sock.send("Device Added in " + username) sock.send("Device remove in " + username) 这些命令不起作用,如果我从客户端插入或拔出 USB,我不会在服务器端收到这些消息。我不确定我的if else条件是否正确。

操作系统linux

这是客户端代码

from socket import *
import os, string, time
import getpass

host = 'localhost'  
port = 52000
username = getpass.getuser()

sock = socket()
# Connecting to socket
sock.connect((host, port))  # Connect takes tuple of host and port

def detect_device(previous):
    
    total = os.system(' lsblk | grep disk | wc -l')
    time.sleep(3)
# if conditon if new device add
    if total<previous:
     sock.send("Device Added in " + username)
# if no new device add or remove
    elif total==previous:
     detect_device(previous)
# if device remove
    else:
     sock.send("Device Removed in " + username)
# Infinite loop to keep client running.
while True:
    data = sock.recv(1024)
    if (data == 'Hi'):
        while True:
            detect_device(os.system(' lsblk | grep disk | wc -l'))

sock.close()

我在客户端得到的输出是 1 1 1 2 2 2 2 1 1

1 表示当前磁盘总数为 1 如果我插入 USB,则磁盘总数为 2 然后 1 表示我断开 USB

标签: pythonpython-3.x

解决方案


好的,我修复了 os.system 在输出中返回 0,所以我用 subprocess.run 尝试它,它运行良好。


推荐阅读