标签:文件 服务端 你好 表数 result 接收 bre 客户 gbk
聊天模式client端
import socket
sk = socket.socket()
address = (‘172.16.10.1‘,3000)
sk.connect(address)
while True:
inp = input(‘>>>‘)
if inp == ‘exit‘:
break
sk.send(bytes(inp,‘utf8‘))
data = sk.recv(1024)
print(str(data,‘utf8‘))
sk.close()
#client端结果:
>>>约吗
滚
>>>exit
#退出就关闭
server端
import socket
sk = socket.socket()
address = (‘172.16.10.1‘,3000)
sk.bind(address)
sk.listen(3)
print(‘waiting....‘)
while True:
conn,addr = sk.accept()
print(addr)
while True:
try:
data = conn.recv(1024)
except Exception:
break
print(str(data,‘utf8‘))
if not data:
conn.close()
break
inp = input(‘>>>‘)
conn.send(bytes(inp,‘utf8‘))
sk.close()
#server端结果:
waiting....
(‘172.16.10.1‘, 52407)
你好
>>>你好啊
约吗
>>>滚
(‘172.16.10.1‘, 52416)
约吗
>>>滚
#服务端只是断开1个通话,服务部断
server端
import socket
import subprocess
sk = socket.socket()
address = (‘172.16.10.1‘,3000)
sk.bind(address)
sk.listen(3)
print(‘waiting....‘)
while 1:
conn,addr = sk.accept()
print(addr)
while True:
try:
data = conn.recv(1024)
except Exception:
break
print(str(data,‘utf8‘))
if not data:
conn.close()
break
#int和bytes格式不能互转,要用str做桥梁
obj = subprocess.Popen(str(data,‘utf8‘),shell=True,stdout=subprocess.PIPE)
# inp = input(‘>>>‘)
# conn.send(bytes(inp,‘utf8‘))
cmd_result = obj.stdout.read()
result_len =bytes(str(len(cmd_result)),‘utf8‘)
conn.sendall(result_len)#连续发送数据容易出现粘包现象
conn.recv(1024)
conn.sendall(cmd_result)
sk.close()
#结果:
waiting....
(‘172.16.10.1‘, 52457)
cd
dir
ipconfig
arp -a
client端
import socket
sk = socket.socket()
address = (‘172.16.10.1‘,3000)
sk.connect(address)
while True:
inp = input(‘>>>‘)
if inp == ‘exit‘:
break
sk.send(bytes(inp,‘utf8‘))
#接收server端执行命令结果的长度
len_result = int(str(sk.recv(1024),‘utf8‘))
sk.send(bytes(‘ok‘,‘utf8‘))
print(len_result)
#初始化data
data = bytes()
#判断服务端的结果长度和客户端接收的长度,当两个相等时,代表数据接收完,退出循环
while len(data) != len_result:
rev = sk.recv(1024)
data += rev
print(str(data,‘GBK‘))
sk.close()
#结果:
>>>cd
39
E:\python\fullstack_s2\weeks2\network
>>>dir
522
驱动器 E 中的卷没有标签。
卷的序列号是 8A5F-14B9
E:\python\fullstack_s2\weeks2\network 的目录
2020/01/12 15:49 <DIR> .
2020/01/12 15:49 <DIR> ..
2020/01/12 13:47 311 client.py
2020/01/12 15:49 462 cmd_client.py
2020/01/12 15:48 778 cmd_server.py
2020/01/12 14:10 509 serve.py
2020/01/12 12:53 29 __init__.py
5 个文件 2,089 字节
2 个目录 252,812,263,424 可用字节
>>>ipconfig
1396
Windows IP 配置
以太网适配器 以太网:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . : ggec.gd
无线局域网适配器 本地连接* 1:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
以太网适配器 以太网 2:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::71cc:5ef5:54e3:fafd%3
IPv4 地址 . . . . . . . . . . . . : 172.16.10.1
子网掩码 . . . . . . . . . . . . : 255.255.0.0
默认网关. . . . . . . . . . . . . :
以太网适配器 以太网 3:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::9cd2:ebb:a9a6:7d56%11
IPv4 地址 . . . . . . . . . . . . : 192.168.20.1
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
以太网适配器 SSTAP 1:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::3523:8fd2:2c30:3800%2
IPv4 地址 . . . . . . . . . . . . : 192.168.0.139
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.0.1
以太网适配器 蓝牙网络连接:
媒体状态 . . . . . . . . . . . . : 媒体已断开连接
连接特定的 DNS 后缀 . . . . . . . :
>>>arp -a
2046
接口: 192.168.0.139 --- 0x2
Internet 地址 物理地址 类型
192.168.0.1 20-6b-e7-6b-5e-00 动态
192.168.0.115 48-95-07-ca-f6-57 动态
192.168.0.117 9c-fb-d5-31-0e-68 动态
192.168.0.144 00-e0-70-1e-1c-0f 动态
192.168.0.183 60-21-01-4c-c1-03
标签:文件 服务端 你好 表数 result 接收 bre 客户 gbk
原文地址:https://blog.51cto.com/13528668/2466225