python简单网络连接,,聊天模式client
python简单网络连接,,聊天模式client
聊天模式client端
import socketsk = 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 socketsk = 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 socketimport subprocesssk = 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)cddiripconfigarp -a
client端
import socketsk = 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()#结果:>>>cd39E:\python\fullstack_s2\weeks2\network>>>dir522 驱动器 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.py2020/01/12 15:49 462 cmd_client.py2020/01/12 15:48 778 cmd_server.py2020/01/12 14:10 509 serve.py2020/01/12 12:53 29 __init__.py 5 个文件 2,089 字节 2 个目录 252,812,263,424 可用字节>>>ipconfig1396Windows 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 -a2046接口: 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
python简单网络连接
评论关闭