网络编程(part11)--socket模块方法及socket套接字属性
鄙人学习笔记
文章目录
- socket模块方法及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:
代码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 = f.read(1024) # 字节串if not data:breaks.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 = c.recv(1024) #字节串if not data:breakf.write(data)f.close()
c.close()
s.close()print("已关闭")
先运行接收端(服务端), 再运行发送端(客户端),运行结果:
接收端运行结果:
再看一下文件列表:
成功创建new_TX.jpg文件啦~
再打开一下new_TX.jpg检查一下:
Perfect!
网络编程(part11)--socket模块方法及socket套接字属性相关推荐
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协 ...
- 【UNIX网络编程(二)】基本TCP套接字编程函数
基于TCP客户/server程序的套接字函数图例如以下: 运行网络I/O.一个进程必须做的第一件事就是调用socket函数.指定期望的通信协议类型. #include <sys/socket.h ...
- 网络编程------IP地址,端口号,套接字,网络字节序
IP地址 IP地址是IP协议中,用来标识网络中的唯一一台主机的地址.IP协议有两个版本IPv4,IPv6.在IPv4中,IP地址是一个4字节的32位的整数.在IPv6中,IP地址是一个 ...
- 《UNIX网络编程》读书笔记——第三章 套接字编程简介
第三章 套接字编程简介 一.套接字地址结构 以socket_in命名,定义在<netinet/in.h>头文件中. struct in_addr{ in_addr_t s_addr:} ...
- python socket connect 阻塞_python 网络编程(socketserver,阻塞,其他方法)
重点回顾: (重点)粘包 : 就是因为接收端不知道如何接收数据,造成接收数据的混乱的问题 只发生在tcp协议上. 因为tcp协议的特点是面向数据流形式的传输 粘包的发生主要是因为tcp协议有两个机制: ...
- python网络编程讲解_详解Python Socket网络编程
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- Py网络编程及应用(urllib、socket/selectors)
# -*- coding: utf-8 -*-''' #Py网络编程及应用.py (urllib.socket/selectors)注意: 一.socket模块: 1.通过指定socket类构造器参数 ...
- python的socket模块_Python socket模块方法实现详解
这篇文章主要介绍了python socket模块方法实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 socket ssh (不带防止粘包的方 ...
- socket网络编程python_python之路8:Socket网络编程
OSI七层模型 Socket介绍 Socket参数介绍 基本Socket实例 OSI七层模型 OSI七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助 ...
最新文章
- pandas使用normalize函数将dataframe中的时间(time)数据列转化为日期(date)数据列(例如,从2019-12-25 11:30:00到2019-12-25)
- Android Jetpack组件之Hilt使用
- Android -- ADT变化aarLint
- linux命令:grep
- 物联网智能硬件设备常见攻击方法
- Java——方法(练习九九乘法表)
- MATLAB中BP神经网络用于回归拟合算法实现(另附GRNN代码)
- 「Luogu5395」【模板】第二类斯特林数·行
- Windows Server入门系列之三 硬盘分区
- php伪类,CSS3新增伪类
- Excel精度问题。
- 浅谈算法和数据结构: 四 快速排序
- 利用VBB仿真——实现LCD+数字键盘的密码验证
- python实现SG滤波
- 如何在html中加入背景,html中如何加入背景图片
- 《数据分析-SmartChart02》SmartChart低代码平台-可视化开发
- BurpSuite 基本使用之暴力破解
- Error: Protocol error, got “H“ as reply type byte
- 408操作系统历年真题
- 抖音爆粉的捷径该怎么玩