首页 > 解决方案 > Python Socket 向客户端返回 Ping 应答

问题描述

通过套接字服务器 ping 时,我正在努力回复客户端。

尝试创建一些简单的东西,我可以通过套接字服务器从客户端 ping 服务器。

客户端检查套接字服务器是否在线,“服务器”中的套接字服务器将响应状态。客户端向套接字服务器发送 ping 命令,套接字服务器向任何地方发起 ping。原始打印输出将发送给客户。

最好的方法是什么?

第一次使用套接字。

服务器

#!/usr/bin/python3
import socket
import sys

HOST = '127.0.0.1'
PORT = 8085

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created')

# Bind socket
try:
        s.bind((HOST, PORT))
except socket.error as msg:
        print('Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
        sys.exit()

print('Socket bind complete')

#Start listening on socket
s.listen(10)
print('Socket now listening')

# Talk with client
while 1:
    #wait to accept a connection - blocking call
        conn, addr = s.accept()
        print('Connected')
        
        while True:
                dataFromClient = conn.recv(1024)
                print(dataFromClient.decode('utf-8'))
                if not dataFromClient:
                        print("[Client] Disconnected")
                        break
        conn.sendall(dataFromClient)
s.close()

客户

#!/usr/bin/python3
import socket
import subprocess
import os

SERVER = "127.0.0.1"

clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientSocket.connect((SERVER,8085))


os.system("clear")
os.system("cls")

while True:
        data = input("Input: ")
        clientSocket.send(data.encode())
#       dataFromServer = clientSocket.recv(1024)
#       print(dataFromServer.decode())
        if data == "ping":
                input1 = str(input("Enter command: "))
                with subprocess.Popen(input1,shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as proc:
                        for line in proc.stdout:
                                clientSocket.send(line)
                                print(proc.communicate())

        elif data == "help":
                print("Command: pingdl,destip=<isp>,repeat=<amount>")
clientSocket.close()

标签: pythonsockets

解决方案


推荐阅读