python学习的第32天网络编程part2
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python学习的第32天网络编程part2,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3237字,纯文字阅读大概需要5分钟。
内容图文
![python学习的第32天网络编程part2](/upload/InfoBanner/zyjiaocheng/848/145cd1931f244ae39cf0a741a9bb6694.jpg)
一、IP和ARP协议(了解)
以太网协议:
(1)一组电信号称为一组数据报或一组数据帧
(2)但凡接入互联网的煮鸡,必须有一块独一无二的网卡
(3)所有的数据报都必须分为报头和数据两部分。报头固定18个字符
IP协议:
- 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
- 范围0.0.0.0-255.255.255.255
- 一个ip地址通常写成四段十进制数,例:172.16.10.1
ip地址分成两部分
- 网络部分:标识子网
- 主机部分:标识主机
注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网
例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网
2、ARP协议
作用:以广播的方式发送数据包,获取目标主机的mac地址
二、套接字socket
1、socket是什么?
翻译过来称为套接字,是对底层的 TCP IP UDP 等网络协议进行封装,使得上层的应用程序开发者,不用直接接触这对复杂,丑陋的协议
在程序员的言论,他就是一个封装好的模块!要完成网络通讯,只需要使用系统提供的socket模块就行
2、TCP和UDP是传输层最常见的协议,主要控制传输数据的方式。(传输层)
TCP:
传输方式:通过三次握手来与服务器建立连接,
优点:可以保证数据的完整性
比如:a机器给b机器发送数据包 要求b机器必须立即返回一个确认包,a机器会等待一段时间,如果超时还没有收到确认,则重发数据
缺点:传输效率低
使用场景: 文字聊天,支付宝转账等,
UDP:
传输方式:不需要建立连接,直接发送
缺点: 不能保证数据的完整性
优点:传输效率比TCP高
使用场景:视频通话,语音通话,UDP
python中的socket
在使用socket的时候用户需要关心的是 ip地址,port端口, 传输协议TCP/UDP,你要发送的数据data
在写网络编程的时候,必然是有两台代码,对应着客户端和服务器
使用socket来完成TCP通讯
应该先完成服务器的代码编写
3、TCP的服务端:
import socket #1.买手机 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STEAM=>TCP流式协议, print(phone) #是用来接收链接请求,从而建立链接的 #2.插手机卡 phone.bind(('127.0.0.1',8080)) #0-65535 #3.开机 phone.listen(5) # 同一时刻最大请求数为5个 print('start....') #4.等待电话请求 conn,client_addr=phone.accept() #(双向链接的套接字对象,存放客户端ip和端口的小元组) # print(conn) # conn代表双向链接,用来收发消息 # print(client_addr) #5.收\发消息 data=conn.recv(1024) #1024接收的最大字节数bytes print('收到客户的数据',data) conn.send(data.upper()) #6.挂电话链接 conn.close() #7.关机 phone.close()
4、TCP的客户端
import socket #1.买手机 phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STEAM=>TCP流式协议, #2.拨号 phone.connect(('127.0.0.1',8080)) #3.发\收消息 phone.send('hello'.encode('utf-8')) # 只能发bytes类型 data=phone.recv(1024) print('收到服务端的消息: ',data) #4.挂电话链接 phone.close()
5、UDP的服务器
import socket # 1.创建socket对象 s = socket.socket(type=socket.SOCK_DGRAM) # 2.绑定端口和ip s.bind(("127.0.0.1",10000)) while True: # 3.接受数据 res = s.recv(1024) print(res) while True: msg = input(">>>:") # 需要获取对方的ip和端口 #s.sendto(msg.encode("utf-8"), ("127.0.0.1", 10000)) # 关闭资源 s.close()
6、UDP的客户端
import socket # 1.创建socket对象 c = socket.socket(type=socket.SOCK_DGRAM) while True: msg = input(">>>:") c.sendto(msg.encode("utf-8"),("127.0.0.1",10000)) c.close()
7、TCP的通信循环和链接循环的客户端
from socket import * server = socket(AF_INET, SOCK_STREAM) server.bind(('127.0.0.1', 7500)) server.listen(5) while True: while True: conn, client = server.accept() data = conn.recv(1024) conn.send(data) conn.close() server.close()
内容总结
以上是互联网集市为您收集整理的python学习的第32天网络编程part2全部内容,希望文章能够帮你解决python学习的第32天网络编程part2所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。