首页 / PYTHON / Python学习-网络编程
Python学习-网络编程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python学习-网络编程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1830字,纯文字阅读大概需要3分钟。
内容图文
@
引言
计算机网络是学习编程的基础四大件,而网络协议则是计算机网络的基础
TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP,本文将介绍下这两者以及它们之间的区别。
网络
网络编程就是通过程序使不同主机上的软件能够通过网络进行通信
IP
ip是用来在网络中标记一台电脑的地址,在本地局域网内是唯一的。
端口
一台电脑有一个ip,但是一台电脑上有多个软件,怎么识别到不同软件进行通信,这时就需要端口,每个软件的端口在本地主机上都是唯一的。
协议
有了ip有了端口,好比商家有了你家小区的地址,单元号,但是该采用什么快递,怎么确保你收到货这些并没有确定,这时就需要商家-顾客有一个统一的规定对这些内容进行规定,这就是协议
所以,ip地址+协议+端口 三者结合才可以可以标识网络中的进程,并利用这个标识进行进程之间的通信
TCP/IP网络模型
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如
- 如何探测到通信目标
- 由哪一边先发起通信
- 使用哪种语言进行通信
- 怎样结束通信
等等都需要事先确定规则。这种规则就是协议(protocol)
TCP/IP 是互联网相关的各类协议族的总称,比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。
UDP
socket(简称 套接字) 是进程间通信的一种方式,通过socket函数,我们可以指定期望的通信协议类型
函数 socket.socket 创建一个 socket,该函数带有两个参数
第一个参数指明了协议簇,目前支持5种协议簇,最常用的有AF_INET(IPv4协议)和AF_INET6(IPv6协议)
第二个参数指明套接口类型,主要有种类型可选:SOCK_STREAM(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接口)
下面是UDP客户端和服务器之间通信交互的时间线,相应的代码实现也是根据此框图进行实现
from socket import *
udp_socket = socket(AF_INET, SOCK_DGRAM)
dest_addr = (‘192.168.123.1‘, 8888)
send_data = input(‘请输入要发送的数据:‘)
udp_socket.sendto(send_data.encode(‘utf-8‘), dest_addr)
recv_data = udp_socket.recvfrom(1024)
# 接收到的数据recv_data是一个元组
# 第1个元素是对方发送的数据
# 第2个元素是对方的ip和端口
print(recv_data[0].decode(‘gbk‘))
print(recv_data[1])
udp_socket.close()
TCP
TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议
TCP通信需要经过创建连接、数据传送、终止连接三个步骤
下面是TCP客户端和服务器之间通信交互的时间线,相应的代码实现也是根据此框图进行实现
from socket import *
tcp_client = socket(AF_INET, SOCK_DGRAM)
server_ip = input(‘input server ip:‘)
server_port = input(‘input server port:‘)
tcp_client.connect((server_ip,server_port))
send_data = input(‘input send data:‘)
tcp_client.send(send_data)
tcp_client.send(send_data.encode("gbk"))
recvData = tcp_client.recv(1024)
print(‘接收到的数据为:‘, recvData.decode(‘gbk‘))
tcp_client.close()
原文:https://www.cnblogs.com/cokefentas/p/14933460.html
内容总结
以上是互联网集市为您收集整理的Python学习-网络编程全部内容,希望文章能够帮你解决Python学习-网络编程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。