python - socket练习(输入系统命令)

socket_server端代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Auther: pangguoping

import socket
import subprocess
ip_port=('127.0.0.1',9990)
#买手机
s=socket.socket()
s.bind(ip_port)
s.listen(5)
while True:
    conn,addr=s.accept()
    while True:
        try:
            recv_data=conn.recv(1024)
            if len(recv_data) == 0:break
            #发消息
            p=subprocess.Popen(str(recv_data,encoding='utf-8'),shell=True,stdout=subprocess.PIPE)
            res=p.stdout.read()
            if len(res) == 0:
                send_data='cmd err'
            else:
                send_data=str(res,encoding='gbk')
            print(send_data)
            conn.send(bytes(send_data,encoding='utf-8'))

        except Exception:
            break
    #挂电话
    conn.close()

socket_client代码

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Auther: pangguoping

import socket
ip_port=('127.0.0.1',9990)
#买手机
s=socket.socket()
#拨号
s.connect(ip_port)
#发送消息
while True:
    send_data=input(">>:").strip()
    if send_data == 'exit':break
    if len(send_data) == 0:continue
    s.send(bytes(send_data,encoding='utf-8'))
    #收消息
    recv_data=s.recv(1024)
    print(str(recv_data,encoding='utf-8'))
    #挂电话
s.close()

 

首先,运行socket_server端程序,然后才能执行客户端程序

这里执行socket_client.py

>>:dir
 驱动器 D 中的卷没有标签。
 卷的序列号是 626C-277F

 D:\PycharmProjects\s13\day9\SOCKET_TEST2 的目录

2016/07/03  15:16    <DIR>          .
2016/07/03  15:16    <DIR>          ..
2016/07/03  15:15               470 socket_client.py
2016/07/03  15:16               810 socket_server.py
2016/07/03  14:54                70 __init__.py
               3 个文件          1,350 字节
               2 个目录 90,986,483,712 可用字节

如果输入错误的命令,输出:

>>:sdkflsdfds
cmd err

 

posted @ 2016-07-03 15:29  unixfbi.com  阅读(644)  评论(0编辑  收藏  举报