博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Socket-实例
阅读量:6983 次
发布时间:2019-06-27

本文共 1472 字,大约阅读时间需要 4 分钟。

import socket,os,timeserver = socket.socket()server.bind(("localhost",9999))server.listen()while True:    conn,addr=server.accept()    print("new conn",addr)    while True:        print("等待新指令")        data =conn.recv(1024)        if not  data:            print("客户端已断开!")            break        print("执行命令:",data)        cmd_res = os.popen(data.decode()).read()#接收字符串,执行结果也是字符串        print("before send",len(cmd_res))        if len(cmd_res) == 0:            cmd_res = "cmd has no output..."        conn.send(str(len(cmd_res.encode())).encode("utf-8")) #先发大小给客户端        #time.sleep(0.5)        client_ack =conn.recv(1024)#wait client to confirm 防止粘包        conn.send(cmd_res.encode("utf-8"))        print("send done")server.close()

 上面是服务端socket_server.py

import socketclient =socket.socket()client.connect(("localhost",9999))while True:    cmd = input(">>:").strip()    if len(cmd)==0:        continue    client.send(cmd.encode("utf-8"))    cmd_res_size =client.recv(1024)#接收命令结果的长度    print("命令结果大小:",cmd_res_size)    client.send("准备好接收了,loser可以发了".encode("utf-8"))#防止粘包    received_size=0    received_data=b''    while received_size < int(cmd_res_size.decode()):        data =client.recv(1024)        received_size +=len(data)#每次收到的有可能小于1024,所以用len判断        received_data +=data    else:        print("cmd res receive done...",received_size)        print(received_data.decode())client.close()

 上面是客户端socket_client.py

转载于:https://www.cnblogs.com/fuyuteng/p/9129425.html

你可能感兴趣的文章
cocos2dx3.8 ios打包脚本编写
查看>>
wordpress搭建博客上传begin主题The themes is locked to another domain
查看>>
2019-04-16 SpringMVC 学习笔记
查看>>
C10K问题
查看>>
慕课网3-13编程练习:采用flex弹性布局制作页面主导航
查看>>
线程中死锁的demo
查看>>
canvas-7globleCompositeOperation.html
查看>>
Java并发(具体实例)——几个例子
查看>>
【待补】java开发Web Service
查看>>
两个有用的数组扩展方法
查看>>
英语发音规则---H字母
查看>>
js进阶 10-11/12 表单伪类选择器的作用
查看>>
C#中Invoke的用法
查看>>
pxe无人值守安装操作系统
查看>>
UESTC 2014 Summer Training #11 Div.2
查看>>
[笔记] SDRAM读写控制
查看>>
size_t的定义
查看>>
mybatis 模糊查询 like的三种方式
查看>>
VML相关
查看>>
HDU 1051 - Rightmost Digit
查看>>