socket__服务端、客户端(注释版)

# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/8/22 16:14
# @Author  : Mr_zhang
# @Site    :
# @File    : server.py
# @Software: PyCharm

from socket import *
import subprocess
import struct
phone = socket(AF_INET,SOCK_STREAM)
phone.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
phone.bind((‘127.0.0.1‘,8080))
phone.listen(7)

print(‘startting...‘)
while True:
    conn,client_addr = phone.accept()        #等待客户端发送数据      ======>接收
    print(‘------->‘,conn,client_addr)
    while True:
        try:
            cmd = conn.recv(1024)
            if not cmd:break
            res = subprocess.Popen(cmd.decode(‘utf-8‘),shell=True,          #将普通字符串转化为系统命令
                                   stdout=subprocess.PIPE,
                                   stderr=subprocess.PIPE)
            stdout = res.stdout.read()         #输入正确读取的内容
            stderr = res.stderr.read()         #输入错误读取的内容

            header = struct.pack(‘i‘,len(stdout)+len(stderr))          #根据长度制作报头
            conn.send(header)                                          #发送报头去探路
            conn.send(stdout)
            conn.send(stderr)
        except Exception:
            break
    conn.close()
phone.close()

 


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/8/22 16:14
# @Author  : Mr_zhang
# @Site    :
# @File    : client.py
# @Software: PyCharm

from socket import *
import struct
phone = socket(AF_INET,SOCK_STREAM)
phone.connect((‘127.0.0.1‘,8080))

while True:
    cmd = input(‘>>:‘).strip()        #输入的命令
    if not cmd:continue
    phone.send(cmd.encode(‘utf-8‘))       #encode之后发送出去

    header_struct = phone.recv(4)         #接收的报头信息
    unpack_res = struct.unpack(‘i‘,header_struct)     #将字节流转化为Python数据类型
    total_size = unpack_res[0]      #拆包之后是元组,取第一项

    recv_size = 0        #接收道德数据,刚开始为0
    total_data = b‘‘     #初始数据
    while recv_size < total_size:      #接收到的数据<总共的数据
        recv_data = phone.recv(1024)    #每次接收的数据
        recv_size+=len(recv_data)      #接收到的数据=每次接收的收据+上次接收的数据
        total_data+=recv_data          #最后的总数据
    print(total_data.decode(‘gbk‘))     #转换为本机电脑的编码
phone.close()

  

时间: 2024-10-06 17:09:09

socket__服务端、客户端(注释版)的相关文章

Netty实例-简单的服务端-客户端实现,注释详细

       书籍推荐:                                       实例代码 :http://download.csdn.net/detail/jiangtao_st/7677503 Netty Server端实现 /** * * <p> * Netty Server Simple * </p> * * @author 卓轩 * @创建时间:2014年7月7日 * @version: V1.0 */ public class NettyServer

Python socket模块实现TCP服务端客户端

Python socket模块实现TCP服务端客户端 写了详细的注释,如果有哪一行不明白,可留言哦. 服务端脚本 # _*_ coding: utf-8 _*_ __author__ = 'xiaoke' __date__ = '2018/6/13 14:39' # 这个脚本创建一个TCP服务器,它接收来自客户端的消息,然后将消息加上时间戳前缀并返回客户端 import socket from time import ctime HOST = '' PORT = 21567 BUFSIZ = 4

Zabbix 服务端&客户端,安装

文档整理中,虽然格式有点乱,但思路不乱~~ 见谅 Zabbix Server 第1章 安装环境 1.1 系统环境 [[email protected] ~]# cat /etc/redhat-release CentOS release 6.7 (Final) [[email protected] ~]# uname -r 2.6.32-573.el6.x86_64 [[email protected] ~]# ifconfig eth0|awk -F "[ :]+" 'NR==2 {

手机淘宝客应用(服务端+客户端+数据库)源码项目

欢迎大家光临我的个人网店:http://shop.662p.com/shop/view8.html 这是一款比较完整的应用源码,手机淘宝客应用(服务端+客户端+数据库),客户端是Java代码实现编程,另外服务端是采用了php的常见框架实现的,代码里面有一个sql文件是数据库导入文件 ,里面的apk是用来升级的版本 设置. 文件大小:10.94 MB 服务器:thinkphp 代码里面有一个sql文件是数据库导入文件 ,里面的apk是用来升级的版本 设置update.xml 用来跟之前安装的对比版

回显服务端/客户端

回显服务端/客户端 在这一章,我们将会实现一个小的客户端/服务端应用,这可能会是你写过的最简单的客户端/服务端应用.回显应用就是一个把客户端发过来的任何内容回显给其本身,然后关闭连接的的服务端.这个服务端可以处理任何数量的客户端.每个客户端连接之后发送一个消息,服务端接收到完成消息后把它发送回去.在那之后,服务端关闭连接. 因此,每个回显客户端连接到服务端,发送一个消息,然后读取服务端返回的结果,确保这是它发送给服务端的消息就结束和服务端的会话. 我们首先实现一个同步应用,然后实现一个异步应用,

WebService 服务端客户端 实例(一)

Delphi中WebService包含的组件解释(有7个)     (1) THTTPRIO-------:使用Http消息来调用远程使用SOAP的接口对象     (2) THTTPReqResp---:给服务器发送一个SOAP消息, THTTPReqResp在可调用接口上执行一个方法请求.       (3) TOPToSoapDomConvert ----:TOPToSoapDomConvert处理Soap方法请求的组合与分发     (4) TSoapConnection:TSoapCo

PHP-Socket服务端客户端发送接收通信实例详解

Socket介绍 什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务. Socket连接过程 根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认.

unity手游《摩卡世界online》全套源码(服务端+客户端+数据库)

unity手游<摩卡世界online>全套源码(服务端+客户端+数据库),客户端用unity3d开发,服务端用java开发,包含服务端源码.客户端源码.工具源码.数据库.配置搭建文档说明.编译好的文件等,解压后2.32G大小,要的速度下,过期不候. 摩卡世界是一款人气火热的休闲类手机网游,画面精致,出场人物造型各异,十分讨人喜爱,同时摩卡世界操作都是通过功能按钮的组合来完成,全拟真的操作规则和爽快的打击节奏让我们找回街机般的操作手感,华丽的必杀技.便捷的操作和流畅的画面,会让格斗爱好者爱不释手

企业运维之域控篇(十四)-域共享文件(服务端&客户端)设置

在公司我们这类杂工最多面对的也就是文件共享服务器.....这个是公司的重中之重,希望公司的领导与我们这类的杂工能够关注:免得一失足成千古恨!!!! 共享文件的作用:主要是在方便大家共同拥有. 共享服务器里的文件只能是暂时存放,而不是让它成为永久的仓库... 可能是人的懒性吧,所以每个公司的员工都是喜欢直接在共享文件里进行工作操作(如:编辑等等),其实这个是最点服务器资源与危险的事情. eg: 当你编辑好文件,保存后才发觉原来改错了,要恢复?那真是有些悲剧了(自己找不到需要的资料,同时也造成同事不

MMORPG网页游戏斩仙录全套源码(服务端+客户端)

斩仙录全套源码(服务端+客户端),<斩仙录>是一款具有浓厚中国风的仙侠MMORPG网页游戏,游戏的背景取材于中国瑰丽多姿的神话故事和民间佳传,玩家可以穿越时空与不同时代的著名人物相遇,共同演绎改编自<山海经>.<白蛇传>.<倩女幽魂>.<画皮>.<精卫填海>.<西游记>.<封神榜>等传世佳作中的精彩桥段. 游戏的美术神话风很强,服务端用c++开发,网页端用flash as+js开发,含fla源文件,解压后702