如何从客户端向服务器套接字发送消息

时间:2020-10-02 17:20:26

标签: python python-3.x

嗨,我正在尝试检测USB是否连接到客户端。我的逻辑是,如果添加了新磁盘,则意味着要获取磁盘的总数,这意味着如果将USB从客户端中删除,则意味着要在客户端上添加新设备,这意味着要从客户端中删除设备,因此我会不断检查循环,以使客户端显示total = 1或total = 2 ,1表示仅1个磁盘可用2表示已添加新设备,依此类推。它工作正常,但是sock.send("Device Added in " + username) sock.send("Device remove in " + username) 这些命令不起作用,如果我从客户端插入USB或从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连接

1 个答案:

答案 0 :(得分:0)

好吧,我将其修复为os.system在输出中返回0,所以我尝试使用subprocess.run并运行正常。