数据报套接字实现广播通信_网络通信

IP:识别主机

端口号:识别进程

网络基础-协议:

  1. 网络接口层(链路层)【物理层,数据链路层】
  2. 网络层
  3. 传输层
  4. 应用层【会话层,表示层,应用层】

Socket

  1. 通过网络完成进程间的通信方式
  2. 本质是编程接口(API):是Socket对TCP/IP协议的封装
  3. 三个步骤:服务监听,客户端请求,连接确认
创建Socket:
import socket
#导入套接字模块
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#s此时是一个socket对象,拥有发送和接收网络数据的功能
​
该函数带有两个参数(参数必须写)
AF_INET(ipv4协议⽤于 Internet 进程间通信) 
套接字类型, 可以是 SOCK_STREAM(流式套接字, ⽤于TCP 协议) 或者 SOCK_DGRAM(数据报套接字,⽤于 UDP 协议) 
TCP慢但是稳定不会丢数据,传输控制协议
UDP快但是可能会丢数据(黑客攻击),用户数据报协议
确定了IP地址端口号(ipv4协议),TCP或UDP协议之后,计算机之间可以进行通信

Socket编程-UDP

发送数据

from socket import *
​
s=socket(AF_INET,SOCK_DGRAM)    #创建套接字
addr=('192.168.1.105',8080)     #准备接受方地址
data=input('请输入:')
s.sendto(data.encode('gb2312'),addr)
#发送数时,python3需要将字符串转换成byte
#encode('utf-8')用utf-8进行编码,获得byte类型对象
#dencode()反过来
s.close()

给飞秋发送消息

飞秋使用:2425端口
发送普通数据,飞秋不会响应,必须发送特殊格式的内容1:123123:吴彦祖:吴彦祖-pc:32:haha飞秋有自己的应用层协议
1,表示版本
后面的数字发送的时间,随便写
32代表发送消息
飞秋炸弹:循环不延时发消息(可能会造成卡死)
注意:IP和端口在网络通信中缺一不可,用到的协议也要匹配,例如飞秋用的是udp协议,使用TCP协议发数据是无效的
udp理解为写信(只有收件人地址),TCP理解为打电话(先拨号建立通路,需要通路稳定)
from socket import *
​
s=socket(AF_INET,SOCK_DGRAM)    #创建套接字
addr=('192.168.1.105',2425)     #准备接受方地址
# data=input('请输入:')
s.sendto('1:123:亢森槟:小亢的电脑:32:你好'.encode('gb2312'),addr)
#发送数时,python3需要将字符串转换成byte
#encode('utf-8')用utf-8进行编码,获得byte类型对象
#dencode()反过来
s.close()

接收数据

from socket import *
s=socket(AF_INET,SOCK_DGRAM)
addr=('192.168.1.105',8080)
#发送数据
data=input('请输入:')
s.sendto(data.encode('gb2312'),addr)
#接收数据
redata=s.recvfrom(2048)
print(redata[0].decode('gb2312'))
s.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值