与天地兮比寿,与日月兮齐光。这篇文章主要讲述网络编程(part11)--socket模块方法及socket套接字属性相关的知识,希望能为你提供帮助。
鄙人学习笔记
文章目录
- ??socket模块方法及socket套接字属性??
- ??部分socket模块方法??
- ??举个例子??
- ??套接字属性??
- ??举个例子??
- ??写个案例??
gethostname()
#获取计算机名
gethostbyname()
#通过名称,获取主机ip地址
getservbyname()
#获取服务端口号
getservbyport()
#获取端口对应服务
inet_aton()
#将IP转换为bytes子串
inet_ntoa()
# 将bytes子串转换为IP地址
举个例子代码:
结果:
套接字属性
sockfd.type
#套接字类型
sockfd.family
#套接字的网络地址类型
sockfd.getsockname()
#获取套接字绑定地址(如果我们不绑定,则系统会自动获取)
sockfd.fileno()
#获取套接字的文件描述符(IO那个部分学了,不要忘了这里的网络操作也是IO操作)
sockfd.getpeername()
#获取连接套接字客户端地址(必须是连接套接字对象,才能调用这个函数,否则会报错)
sockfd.setsockopt(level,option,value)
"""
功能:设置套接字选项(使现有套接字的功能更加丰富)
参数: level选项类别(我们常用的大类:SOL_SOCKET)
option 具体选项内容
value选项值(期望值)
"""
sockfd.getsockopt(level,option)
#获取套接字选项值
备注1:我们通过socket()生成套接字对象, 那么我们调用的send()、recv()、listen()、accept()也是套接字属性(属性分为:属性变量/属性方法,或者称为实例变量/实例方法)
备注2:套接字选项分为几个大类,几个大类下还有很多小项,每个小项下还有具体的值。我们对每一类套接字的设置,都可能改变套接字的原有属性行为。
备注3:套接字大类SOL_SOCKET下的几个小类(具体选项内容):
举个例子代码1:
结果1:
代码2(自己不绑定IP地址时):
结果2:
【网络编程(part11)--socket模块方法及socket套接字属性】代码3(自己绑定IP地址时):
结果3:
代码4(设置套接字类别):
结果我就不演示了,若有疑问自己学习。
写个案例要求:发送端读取图片,然后将图片发送给,接收端,接收端再将接收的数据写入新的文件中。
首先,我们瞧一瞧,我们的图片TX.jpg:
真好看呀~
我们再看一下项目下的文件列表:
OK,现在正式开始敲代码。
发送端代码:
from socket import *
s = socket()
s.connect((127.0.0.1,8888))
f = open(TX.jpg,rb)
#读取内容进行发送
while True:
data = https://www.songbingjia.com/android/f.read(1024) # 字节串
if not data:
break
s.send(data)
f.close()
s.close()
接收端代码:
from socket import *
s = socket()
s.bind((127.0.0.1,8888))
s.listen(5)
print("等待连接......")
c,addr = s.accept()
print("Connect from",addr)
f = open(new_TX.jpg,wb)
#接受内容写入文件
while True:
data = https://www.songbingjia.com/android/c.recv(1024) #字节串
if not data:
break
f.write(data)
f.close()
c.close()
s.close()
print("已关闭")
先运行接收端(服务端), 再运行发送端(客户端),运行结果:
接收端运行结果:
再看一下文件列表:
成功创建new_TX.jpg文件啦~
再打开一下new_TX.jpg检查一下:
Perfect!
推荐阅读
- Hive入门之数据类型
- 网络编程(part7)--网络主机/IP地址/域名/端口号
- 《多元统计分析》学习笔记之聚类分析
- 《娱乐至死》读书笔记(part1)--深入一种文化的最有效途径是了解这种文化中用于会话的工具
- HTML基础(part7)--常用标签之超链接标签
- 《犯罪心理学》读书笔记(part1)--蔑视社会秩序的最明显最极端的表现就是犯罪
- numpy基础(part15)--线性模型
- 防火墙基础之IPSec VPN实验详解#导入Word文档图片#
- pandas基础(part4)--排序/分组/合并