python 基于TCP协议的套接字编程详解
Python  /  管理员 发布于 7年前   181
基于TCP协议的套接字编程
实现电话沟通为例,这里传递的是字符,可以自己尝试去发送一个文件
# 服务端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. 收到信息 receivedata = conn.recv(1024) # 每次接收多少字节,如果改为10,客户端输入dir,(可以在cmd中输入 dir,看看会得到什么) ,会出现什么情况呢,下次的博客会讲到粘包问题,以及如何处理粘包问题print(data)# 5. 回消息conn.send(data.upper())except ConnectionAbortedError:continueexcept ConnectionResetError:break
# 客户端1import 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)
# 客户端2import 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远程执行命令(linux系统)
# ssh服务端import socketimport subprocessserver = 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) # 打印出的是其他人机子的IPwhile True:try:cmd = conn.recv(1024) # dirprint(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'
学习最有效的方法一定是有输入,一定要输出,这样学的东西才能真正得有用
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号