python 基于TCP协议的套接字编程详解

作者:格格小丫头 时间:2023-09-11 21:09:30 

基于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. 收到信息 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远程执行命令(linux系统)


# 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'

学习最有效的方法一定是有输入,一定要输出,这样学的东西才能真正得有用

来源:https://www.cnblogs.com/geyatou322/p/11093020.html

标签:python,TCP,协议,套接字,编程
0
投稿

猜你喜欢

  • python3.5的包存放的具体路径

    2023-11-27 21:11:21
  • executesql 存储过程

    2024-01-21 17:04:21
  • Python之pandas读写文件乱码的解决方法

    2021-03-18 20:25:35
  • Bad Tags — html有害的标签

    2008-10-13 19:47:00
  • 利用ASP在线维护数据库

    2007-10-12 13:53:00
  • Sql学习第一天——SQL 练习题(建表/sql语句)

    2024-01-22 05:44:39
  • XML简易教程之四

    2008-09-05 17:19:00
  • 如何恢复MYSQL的ROOT口令

    2024-01-16 15:50:08
  • python实现飞机大战游戏(pygame版)

    2021-11-11 17:59:24
  • python中enumerate函数用法实例分析

    2023-04-02 05:14:20
  • redis之django-redis的简单缓存使用

    2023-11-20 10:30:15
  • Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)

    2024-01-22 11:23:41
  • vue eslint报错error "Component name "*****" should always be multi-word"解决

    2024-05-13 09:10:32
  • Python高阶函数与装饰器函数的深入讲解

    2023-10-04 12:42:41
  • 使用apiDoc实现python接口文档编写

    2023-10-23 21:28:40
  • python数据可视化Seaborn绘制山脊图

    2023-12-22 09:04:17
  • 内容,而不是Chrome

    2008-10-16 13:43:00
  • Python用类实现扑克牌发牌的示例代码

    2021-01-07 10:07:07
  • python使用for循环和海龟绘图实现漂亮螺旋线

    2023-08-01 10:38:57
  • 给大家整理了19个pythonic的编程习惯(小结)

    2024-01-02 08:00:05
  • asp之家 网络编程 m.aspxhome.com