DDR爱好者之家 Design By 杰米
基于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'
学习最有效的方法一定是有输入,一定要输出,这样学的东西才能真正得有用
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
更新日志
2025年10月27日
2025年10月27日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]