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简单网络连接

评论关闭