愚公移山日记·20

愚公移山日记·20

学习进度

我写的日记倒不如说是笔记,今天的学习也算可以,敲了一个udp聊天的实例,代码不是很多,但是代码的注解叫我很是费脑筋,敲了好多,唯恐描述不清楚,也并非有大胸怀去教会他人,只求在以后偶然翻看,自己能理解。

说明

在我学习的这些课程均用到Linux系统的终端,虚拟机,由于本人能力有限制,并不能保证所有代码均准确无误,但也尽力将错误降至最低,如果博文能对您产生一点点帮助,那也是非常荣幸。

Socket简介(套接字)

两个不同主机之间的进程进行通讯的端口,socket 是网络通信的基本单元,网络数据的控制单元,网页浏览,QQ聊天等均使用Socket
socket的创建步骤:

  1. 导入模块
  2. 创建套接字
  3. 数据传输
  4. 关闭套接字
     '''#导入模块 socket
	#创建一个套接字,使用IP v4,使用UDP方式
	#数据的传递
	#关闭套接字
	'''

#导入模块 socket
import socket

#创建一个套接字,使用IP v4,使用UDP方式
#udp_socket = socket.socket(协议类型,传输方式)
#参数一:socket.AF_INET 使用IPv4
#socket.AF_INET6 使用IPv6
#参数二:scoket.SOCK_DGRAM使用UPD 的传输方式(无连接)
#socket.SOCK_STREAM 使用TCP的传输方式(有链接)
udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#绑定发送端的端口绑定
#upd_socket.bind(adress)
#address 是一个元组,元组的第一个元素是字符串类型的IP地址,第二个元素 整数端口号
#IP地址可以省略  省略之后是自己的IP地址
#ip地址尽可能为空,好处是可以接受不同网卡的信息
upd_socket.bind(('IP地址',8888))
#绑定的必须是自己的位置('IP地址',8888),8888 是自定义

#数据的传递
#socket.sendto(要发送的数据的二进制格式,对方的IP地址和端口号)
#参数一:要发送的数据二进制格式
#字符串转换为二进制格式 :字符串.encode() 把字符串转化为二进制
#参数二:对方发IP和端口号 address类型
#要求IP地址和端口号是一个元组:第一个字符串类型 IP地址 ;整数类型的端口号
udp_socket.sendto('字符串'.encode(),('IP地址'8080))

#数据的接受(二级制)
#recvfeom(1024) 方法的作用:
#从套接字中接受1024个字节的数据
#此方法会造成程序的阻塞,等待另一台计算机发来数据
#如果对方发数据了,recvfrom会自动解除阻塞
#如果对方没有发送,会一直等待
#接受到的数据是一个元组,接受数据的二级制,发送方的IP地址和端口号
recv_data  = upd_socket.recvfrom(1024)
#recv_data[0] 接受到的数据的二机制格式
#recv_data[1] 元组,对方的IP和端口

#解码数据,得到字符串
#errors = 'ignore' 出现错误后,如何处理  忽略错误信息
#errors = 'strict' 严格模式,解码错误
#decode(encoding = 'utf-8',errors = '')
recv_text = recv_data[0].decode('GBK')

#输出显示接受的内容
print('来自:',recv_data[0],'的消息',recv_text)
decode() 解码

#关闭套接字
udp_socket.close()
 
udp广播

代码如下:

#导入模块
import socket
#创建套接字
socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#设置广播权限(套接字默认不允许发送广播,需要开启相关的权限)
#socket.setsockopt(套接字,广播属性,属性值)
#广播地址 xxx.xxx.xxx.255 或者 255.255.255.255
#socket.SOL_SOCKET 当前的套接字
#socket.SO_BROADCAST 广播属性
udp_socket = socket.setsocket(socket.SOL_SOCKET,socket.SO_BROADCAST,True)
#发送数据
#255.255.255.255也可以写 当前局部网络号下的主机
udp_socket.sendto('字符串'.encod(),('255.255.255.255',8080))
#关闭套接字
upd_socket.close()

广播地址的格式是: xxx.xxx.xxx.255 或者 255.255.255.255,根据世实际的需求去做相对应的广播IP地址。

未完待续。。。。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值