1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/1 6 ''' 7 import socket 8 # 创建一个socket: 9 #family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None 10 #创建Socket时,AF_INET指定使用IPv4协议, 11 # 如果要用更先进的IPv6,就指定为AF_INET6 12 # AF_UNIX Unix不同进程之间的通信 13 # SOCK_STREAM指定使用面向流的TCP协议 SOCK_DGRAM UDP协议 14 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 15 print(s) 16 address=('127.0.0.1',8000) 17 #建立连接 18 s.bind(address) 19 #监听设置端口等待客户端的请求数量 20 s.listen(3) 21 22 23 print('等待...........') 24 #accept 阻塞 25 ###不允许发送空 26 while True: 27 # accept 阻塞 28 conn, addr = s.accept() 29 print(addr) 30 while True: 31 try: 32 data = conn.recv(1024) 33 except Exception: 34 break 35 if not data: 36 conn.close() 37 break 38 print(data.decode("utf-8")) 39 40 inp=input(">>>") 41 conn.send(inp.encode('utf-8'))
1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/1 6 ''' 7 import socket 8 9 sck=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 10 print(sck) 11 address=('127.0.0.1',8000) 12 sck.connect(address) 13 while True: 14 inp = input(">>>") 15 if inp == 'exit': 16 break 17 sck.send(inp.encode('utf-8')) 18 19 data=sck.recv(1024) 20 print(data.decode("utf-8")) 21 22 23 sck.close()
1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/1 6 ''' 7 import subprocess 8 9 import socket 10 11 # 创建一个socket: 12 #family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None 13 #创建Socket时,AF_INET指定使用IPv4协议, 14 # 如果要用更先进的IPv6,就指定为AF_INET6 15 # AF_UNIX Unix不同进程之间的通信 16 # SOCK_STREAM指定使用面向流的TCP协议 SOCK_DGRAM UDP协议 17 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 18 print(s) 19 address=('127.0.0.1',8000) 20 #建立连接 21 s.bind(address) 22 #监听设置端口等待客户端的请求数量 23 s.listen(3) 24 25 26 print('等待...........') 27 #accept 阻塞 28 ###不允许发送空 29 while True: 30 # accept 阻塞 31 conn, addr = s.accept() 32 print(addr) 33 while True: 34 try: 35 data = conn.recv(1024) 36 except Exception: 37 break 38 if not data: 39 conn.close() 40 break 41 data=str(data,"utf8") 42 obj=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE) 43 44 info=obj.stdout.read()#取到执行后得到的结果erjinzhi 45 46 conn.sendall(info) 47 48 #inp=input(">>>") 49 #conn.send(info.encode('utf-8'))
1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/1 6 ''' 7 import socket 8 9 sck=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 10 print(sck) 11 address=('127.0.0.1',8000) 12 sck.connect(address) 13 while True: 14 inp = input(">>>") 15 if inp == 'exit': 16 break 17 sck.send(inp.encode('utf-8')) 18 19 data=sck.recv(1024)#如果超过1024,就会阻塞 20 for i in data: 21 print(str(i,"gbk",errors="ignore")) 22 23 24 sck.close()
将
1 Windows IP 配置 2 3 4 以太网适配器 本地连接: 5 6 连接特定的 DNS 后缀 . . . . . . . : 7 本地链接 IPv6 地址. . . . . . . . : fe80::ad1d:5018:876b:3d00%12 8 IPv4 地址 . . . . . . . . . . . . : 192.168.0.100 9 子网掩码 . . . . . . . . . . . . : 255.255.255.0 10 默认网关. . . . . . . . . . . . . : 192.168.0.1 11 12 以太网适配器 VMware Network Adapter VMnet1: 13 14 连接特定的 DNS 后缀 . . . . . . . : localdomain 15 本地链接 IPv6 地址. . . . . . . . : fe80::58b1:6045:38e4:ad72%15 16 IPv4 地址 . . . . . . . . . . . . : 192.168.68.1 17 子网掩码 . . . . . . . . . . . . : 255.255.255.0 18 默认网关. . . . . . . . . . . . . : 19 20 以太网适配器 VMware Network Adapter VMnet8: 21 22 连接特定的 DNS 后缀 . . . . . . . : localdomain 23 本地链接 IPv6 地址. . . . . . . . : fe80::134:8b2e:21e2:7735%16 24 IPv4 地址 . . . . . . . . . . . . : 192.168.198.1 25 子网掩码 . . . . . . . . . . . . : 255.255.255.0 26 默认网关. . . . . . . . . . . . . : 27 28 隧道适配器 isatap.{7FE544F2-9978-44D8-8B01-FCA6BF7A222D}: 29 30 媒体状态 . . . . . . . . . . . . : 媒体已断开 31 连接特定的 DNS 后缀 . . . . . . . : 32 33 隧道适配器 本地连接* 11: 34 35 媒体状态 . . . . . . . . . . . . : 媒体已断开 36 连接特定的 DNS 后缀 . . . . . . . : 37 38 隧道适配器 isatap.localdomain: 39 40 媒体状态 . . . . . . . . . . . . : 媒体已断开 41 连接特定的 DNS 后缀 . . . . . . . : localdomain
完整代码:
1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/1 6 ''' 7 import subprocess 8 9 import socket 10 11 # 创建一个socket: 12 #family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None 13 #创建Socket时,AF_INET指定使用IPv4协议, 14 # 如果要用更先进的IPv6,就指定为AF_INET6 15 # AF_UNIX Unix不同进程之间的通信 16 # SOCK_STREAM指定使用面向流的TCP协议 SOCK_DGRAM UDP协议 17 s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 18 print(s) 19 address=('127.0.0.1',8000) 20 #建立连接 21 s.bind(address) 22 #监听设置端口等待客户端的请求数量 23 s.listen(3) 24 25 26 print('等待...........') 27 #accept 阻塞 28 ###不允许发送空 29 while True: 30 # accept 阻塞 31 conn, addr = s.accept() 32 print(addr) 33 while True: 34 try: 35 data = conn.recv(1024) 36 except Exception: 37 break 38 if not data: 39 conn.close() 40 break 41 data=str(data,"utf8") 42 obj=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE) 43 44 info=obj.stdout.read()#取到执行后得到的结果二进制 45 result_len=bytes(str(len(info)),"utf8") 46 conn.send(result_len) 47 48 conn.sendall(info) 49 50 #inp=input(">>>") 51 #conn.send(info.encode('utf-8'))
1 #!/usr/bin/env python3 2 #-*- coding:utf-8 -*- 3 ''' 4 Administrator 5 2018/8/1 6 ''' 7 import socket 8 9 sck=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 10 print(sck) 11 address=('127.0.0.1',8000) 12 sck.connect(address) 13 while True: 14 inp = input(">>>") 15 if inp == 'exit': 16 break 17 sck.send(inp.encode('utf-8')) 18 result_len=int(str(sck.recv(1024),"utf-8"))#先接受二进制的长度 19 print(result_len) 20 21 data=bytes() 22 while len(data) !=result_len: 23 recv=sck.recv(1024) 24 data+=recv 25 print(str(data,"gbk",errors="ignore")) 26 #data=sck.recv(result_len)#如果超过1024,就会阻塞 27 #print(str(data,"gbk",errors="ignore")) 28 29 30 # flage=True 31 # while flage: 32 # data =None 33 # data=sck.recv(1024)#如果超过1024,就会阻塞 34 # print(str(data,"gbk",errors="ignore")) 35 36 #if not data: 37 # flage=False 38 39 40 sck.close()
沾包现象及解决办法: