目录python
实现电话沟通为例,这里传递的是字符,能够本身尝试去发送一个文件linux
# 服务端 import socket # 1. 符合TCP协议的手机 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # TCP # 2. 绑定手机号 一个服务器,咱们本身的电脑做为服务器的话,用本身的IP地址 server.bind(('127.0.0.1',8000)) # 127.0.0.1 表明本地 # server.bind(('192.168.11.251',8000)) server.listen(5) # 半链接池 能够同时接收5个客户端 # 3. 等待客户端链接 print('start...') # 连接循环 while True: # 通讯循环 conn,client_addr = server.accept() while True: try: # 4. 收到信息 receive data = conn.recv(1024) # 每次接收多少字节,若是改成10,客户端输入dir,(能够在cmd中输入 dir,看看会获得什么) ,会出现什么状况呢,下次的博客会讲到粘包问题,以及如何处理粘包问题 print(data) # 5. 回消息 conn.send(data.upper()) except ConnectionAbortedError: continue except ConnectionResetError: break
# 客户端1 import socket # 1. 建立符合TCP协议的手机 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2. 拨号 client.connect(('127.0.0.1',8000)) while True: msg = input('please enter your msg') # dir # 3. 发送消息 client.send(msg.encode('utf8')) # 4. 接收消息 data = client.recv(1024) print(data)
# 客户端2 import socket # 1. 建立符合TCP协议的手机 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2. 拨号 client.connect(('127.0.0.1',8000)) # msg = input('please enter your msg>>>') # 3. 发送消息 client.send('hello'.encode('utf8')) client.send('world'.encode('utf8')) # 4. 接收信息 data = client.recv(1024) print(data)
# ssh服务端 import socket import subprocess server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind(('192.168.11.251',8000)) # 这是个人机子,客户端能够是其余人的机子 server.listen(5) print('start...') while True: conn,cient_addr = server.accept() print(client_addr) # 打印出的是其余人机子的IP while True: try: cmd = conn.recv(1024) # dir print(cmd) # 帮你执行cmd命令,而后把执行结果保存到管道里 pipeline = subprocess.Popen(cmd.decode('utf8'), shell = True, stderr = subprocess.PIPE, # std 标准 stdout = subprocess.PIPE) stderr = pipeline.stderr.read() stdout = pipeline.stdout.read() conn.send(stderr) conn.send(stdout) except ConnectionResetError: break
# ssh客户端 import socket # 1.建立符合TCP协议的手机 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 2. 拨号 client.connect(('192.168.11.210',8000)) while True: msg = input('please enter your msg') # dir # 3. 发送消息 client.send(msg.encode('utf8')) # 4. 接收消息 data = client.recv(10) print(data.decode('gbk')) # 在mac电脑上多是'utf8'
学习最有效的方法必定是有输入,必定要输出,这样学的东西才能真正得有用shell