day31

今日内容:
    1、socket的通信流程介绍
    2、基于tcp协议通信的套接字程序

# 服务端:
import socket

# 基于TCP协议实现简单套接字通信
# phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#
# phone.bind(('127.0.0.1', 8080))
#
# phone.listen(5)
# print('starting %s:%s' % ("127.0.0.1", 8080))
#
# conn, client_addr = phone.accept()
#
# data = conn.recv(1024)         # 最大接收的字节个数
# print('收到的客户端数据:', data.decode('utf-8'))
# conn.send(data.upper())
#
# conn.close()
# phone.close()


# 加上循环
# 服务器应该满足的特性:1、一直对外提供服务  2、并发的提供服务

# phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# phone.bind(('127.0.0.1', 8080))
# phone.listen(5)
# print('starting %s:%s' % ('127.0.0.1', 8080))
#
# 链接循环
# while True:
#     conn, client_addr = phone.accept()
#     print(client_addr)
#     # 通信循环
#     while True:
#         try:
#             data = conn.recv(1024)
#             print('收到的客户端数据:', data.decode('utf-8'))
#             conn.send(data.upper())
#         except Exception:
#             break
#
#     conn.close()
#
# phone.close()


# 远程执行命令
import subprocess

phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
phone.bind(('192.168.11.245', 8080))
phone.listen(5)
print('starting %s:%s' % ('127.0.0.1', 8080))
while True:
    conn, client_addr = phone.accept()
    try:
        cmd = conn.recv(1024)
        obj = subprocess.Popen(cmd.decode('utf-8'),
                               shell=True,
                               stdout=subprocess.PIPE,
                               stderr=subprocess.PIPE
                               )
        res = obj.stdout.read() + obj.stderr.read()
        print(res)
        conn.send(res)
    except Exception:
        break

    conn.close()

phone.close()


# 客户端
import socket

# 基于TCP协议实现简单套接字通信
# phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#
# phone.connect(('127.0.0.1', 8080))
#
# phone.send('hello'.encode('utf_8'))
#
# data = phone.recv(1024)
#
# print('服务端返回的数据:', data.decode('utf-8'))
#
# phone.close()


# 加上循环
# phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# phone.connect(('127.0.0.1', 8080))
#
# while True:
#     msg = input('>>>:').strip()
#     phone.send(msg.encode('utf-8'))
#     data = phone.recv(1024)
#     print('服务端返回的数据:', data.decode('utf-8'))
#
# phone.close()


# 远程执行命令
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
phone.connect(('192.168.11.245', 8080))

while True:
    cmd = input('>>>>>:').strip()
    phone.send(cmd.encode('utf-8'))
    data = phone.recv(1024)
    print(data.decode('gbk'))

phone.close()

 

posted @ 2020-08-13 21:31  板鸭没有腿  阅读(51)  评论(0)    收藏  举报