网络编程 基础 基于socket的tcp和udp连接
网络开发的框架
C/S B/S 架构
- 程序都是bs架构的程序(b指浏览器,s指服务器)
- c(client)是客户端,s(server)是服务器
- bs架构是cs架构的一种
- 未来的趋势,
- pc端bs架构,统一了程序的入口
- 手机端 微信公众号,统一了程序的入口
socket
起一个tcp协议的socket进行通信

# tcp协议
#客户端
# import socket
# rev = socket.socket()
# # rev.bind(("ip地址",端口号)) #端口号一般取8000- 9999
# rev.listen() #开启服务端
#
# msg,addr = rev.accept() #三次握手过程,显示连接服务端的用户端地址
# msg.send("你好".encode("utf-8")) #给用户端发消息,需要进行编码
# mv = msg.recv(1024) #接受用户端回的消息,限制一次接受的最大字节
# print(mv.decode("utf-8")) #打印接受到的消息,需要解码
# msg.close() #关闭用户端的连接
# rev.close() #关闭服务端
# 用户端
# import socket
# cli = socket.socket()
# cli.connect(("ip地址",端口号)) #连接服务端
# msg = cli.recv(1024) #接收信息
# print(msg.decode("utf-8")) #打印消息
# mv = input("》》》》》:")
# cli.send(mv.encode("utf-8")) #发消息
# cli.close() #关闭用户端
利用端口传输视频
import socket
rev = socket.socket()
rev.bind(("127.0.0.1",8989))
rev.listen() conn,addr = rev.accept()
filname = conn.recv(1024) with open(filname.decode("utf-8"),"wb") as f:
while True:
content = conn.recv(1024)
if content == b"ok":break
f.write(content)
print("接收完毕")
conn.close()
rev.close() import time
import os
import socket
cli = socket.socket()
cli.connect(("127.0.0.1",8989))
cli.send("file".encode("utf-8"))
time.sleep(0.1)
size = os.path.getsize("file")
with open("file","rb") as f:
while size:
content = f.read(1024)
size -= len(content)
cli.send(content)
cli.send(b"ok")
print("传输完毕")
cli.close()
起一个udp协议的socket进行通信

# udp协议
# import socket
# rev = socket.socket(type=socket.SOCK_DGRAM)
# rev.bind(("ip地址",端口号))
#
# msg,addr = rev.recvfrom(1024) #接收到的消息
# print(msg.decode("utf-8"))
# rev.sendto("你好".encode("utf-8",addr)) #发消息,需要对方的ip地址
# rev.close() #关闭端口 # import socket
# cli = socket.socket(type=socket.SOCK_DGRAM)
# cli.sendto("信息".encode("utf-8"),("ip地址",端口号)) #发消息
# mv,addr = cli.recvfrom(1024) #接收信息和ip地址
# print(mv.decode("utf-8")) #打印信息
# cli.close() #关闭端口
网络编程 基础 基于socket的tcp和udp连接的更多相关文章
- 运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接
运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接 最近在项目中可能要用到socket相关的东西来发送消息,所以初步研究了下socket的TC ...
- 从零开始学Python第八周:网络编程基础(socket)
Socket网络编程 一,Socket编程 (1)Socket方法介绍 Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Soc ...
- Python网络编程基础 ❷ 基于upd的socket服务 TCP黏包现象
TCP的长连接 基于upd的socket服务 TCP黏包现象
- 基于socket的TCP和UDP编程
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
- (转)基于socket的TCP和UDP编程
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
- 网络编程基础之Socket套接字
一.Socket介绍 1.什么是socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族 ...
- 网络编程基础之socket套接字编程实现同一IP下的信息传输
鲁照山 1.网络协议的5层模型,每层内容的整理 2.画图描述三次握手四次挥手,和C端S端的状态 3.写一个客户端,实现给服务端发送hello world 字符串, 写一个服务端,将客户端发送的数据变成 ...
- 【Python网络编程】利用Python进行TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...
- 第1章 网络编程基础(2)——Socket编程原理
Socket编程原理 Socket是网络通信端点的一种抽象,它提供了一种发送和接收数据的机制. 流socket(SOCK_STREAM):双向.有序.无重复.并且无记录边界 数据报Socket(SOC ...
随机推荐
- MLlib学习——基本统计
给定一个数据集,数据分析师一般会先观察一下数据集的基本情况,称之为汇总统计或者概要性统计.一般的概要性统计用于概括一系列观测值,包括位置或集中趋势(比如算术平均值.中位数.众数和四分位均值),展型(比 ...
- node Cheerio 获取script脚本里的数据
const cheerio = require('cheerio'); const $ = cheerio.load(html); // your html//如果有多少script脚本标签使用循环来 ...
- Solution -「洛谷 P5827」点双连通图计数
\(\mathcal{Description}\) link. 求有 \(n\) 个结点的点双连通图的个数,对 \(998244353\) 取模. \(n\le10^5\). \(\mat ...
- Solution -「APIO/CTSC 2007」「洛谷 P3620」数据备份
\(\mathcal{Description}\) Link. 给定升序序列 \(\{x_n\}\) 以及整数 \(k\),在 \(\{x_n\}\) 中选出恰 \(k\) 对 \((x_i, ...
- Intellij IDEA出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver处理办法
菜单-->File-->project structure-->Modules-->Dependencies-->添加MySQL的驱动包:mysql-connector- ...
- 树莓派安装docker并使用docker图形化工具portainer
配置环境 系统:Raspbian 11(64位) 设备:树莓派4B 一.安装docker 1.安装 curl -fsSL https://get.docker.com -o get-docker.sh ...
- Welcom to my studyspace! 欢迎来到我的学习空间!
由于新手,博客才刚开始起步,用于记录我的学习,博客的建设后续需要将其完善 对我的博客进行diy 用于分享我的学习经历,一些笔记,还有一些小小的心得
- [自动化]基于kolla的自动化部署ceph集群
kolla-ceph来源: 项目中的部分代码来自于kolla和kolla-ansible kolla-ceph的介绍: 1.镜像的构建很方便, 基于容器的方式部署,创建.删除方便 2.kolla-ce ...
- 商业智能BI不仅仅是报表工具,它的真正价值是:决策支持
作为一个独立系统,商业智能BI解决两个问题.一是信息的发布,它可以在正确的时间向正确的人提供正确的信息.几十年来,我们看到的商业智能项目,至少有90%的项目成果变成了提供信息的报告.这种情况下,改变的 ...
- 财务数据分析工具的选择:Excel还是大数据BI?
财务数据分析一般都采用什么工具?跟财务数据分析的哪些指标有关?要怎样展现财务数据间的紧密关联? 财务报表分析比较复杂,一般来说主要包括以下项目: 1. 趋势:在多个时间段内为财务报表中的关键项目创建 ...