码迷,mamicode.com
首页 > 编程语言 > 详细

python简单网络连接

时间:2020-01-12 21:59:28      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:文件   服务端   你好   表数   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     

python简单网络连接

标签:文件   服务端   你好   表数   result   接收   bre   客户   gbk   

原文地址:https://blog.51cto.com/13528668/2466225

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!