失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python的基础网络编程是下列_Python入门基础之网络编程 socket编程 TCP UDP编程...

python的基础网络编程是下列_Python入门基础之网络编程 socket编程 TCP UDP编程...

时间:2022-08-27 05:44:27

相关推荐

python的基础网络编程是下列_Python入门基础之网络编程 socket编程 TCP UDP编程...

忙了两天,继续更文!希望多多支持。

套接字

套接字是一种具有之前所说的"通讯端点"概念的计算机网络数据结构。网络化的应用程序在开始任何通讯之前都必需要创建套接字。

套接字有三种:

1、 AF_UNIX(在 POSIX1.g 标准中也叫 AF_LOCAL),表示"地址家族:UNIX",是指在unix系统中使用的 套接字,这些套接字是基于文件的。所以,它们的底层结构是由文件系统来支持的。

2、 AF_INET或叫"地址家族:Internet"。它是基于网络的,还有一种地址家族 AF_INET6 被用于网际协议第 6 版(IPv6)寻址上。

3、 AF_NETLINK:Python 2.5 中加入了一种 Linux 套接字的支持:AF_NETLINK(无连接)套接字家族让用户代码与内核代码之间的 IPC 可以使用标准 BSD 套接字接口。

Python 只支持 AF_UNIX,AF_NETLINK,和 AF_INET 家族。我们平时使用的大部分都是基于网络的,所以,主要用AF_INET。

1、 面向连接与无连接

有过网络基础的人都会了解TCP协议和UDP协议,他俩是不同的。主要区别就是TCP是基于面向连接的,而UDP是无连接的。

面向连接

即在通讯之前一定要建立一条连接,就像跟朋友打电话时那样。TCP协议在和别人通信的时候首先要进行三次握手和建立连接,才能继续通信。

要创建 TCP 套接字就得在创建的时候,指定套接字的类型为 SOCK_STREAM。TCP 套接字采用 SOCK_STREAM 这个名字,表达了它做为流套接字的特点。由于这些套接字使用 Internet 协议(IP)来查找网络中的主机,这样形成的整个系统,一般会由这两个协议(TCP 和 IP)来提及,即 TCP/IP。

无连接

无连接和面向连接正好相反,它不需要先和别人建立连接,而是直接和别人通讯,就像我直接对你喊话一样。这样不能保证通讯的可靠性和数据完整性。这种协议主要用在一些在线视频传输方面,因为视频中丢一点信息对观看影响不大。

实现这种连接的主要协议就是用户数据报协议(即 UDP)。要创建 UDP 套接字在创建的时候,指定套接字类型为 SOCK_DGRAM。S由于这些套接字使用 Internet 协议来查找网络中的主机,这样形成的整个系统,一般会由这两个协议(UDP 和 IP)来提及,即 UDP/IP。

socket()模块函数

在python中,我们主要调用socket()函数来进行 网络编程。

socket_family 可以是 AF_UNIX 或 AF_INET。socket_type 可以是 SOCK_STREAM 或 SOCK_DGRAM。这几个常量的意义可以参考之前的解释。protocol 一般不填,默认值为 0。

创建一个 TCP/IP 的套接字,你要这样调用 socket.socket():

同样地,创建一个 UDP/IP 的套接字,你要这样:

python套接字函数:

TCP编程:

客户端和服务器建立连接流程图如下:

TCP服务器编程步骤:

如果有多个客户端要连接服务器,服务器端可以创建线程来与客户端建立连接,下一节将会将。

示例代码:

TCP客户端编程

示例代码:

运行结果:

UDP编程:

Udp相比TCP就简单多了

UDP服务器编程:

示例代码:

UDP客户端编程:

运行结果:

下一篇介绍python服务器与客户端多线程编程,欢迎关注。

如果觉得《python的基础网络编程是下列_Python入门基础之网络编程 socket编程 TCP UDP编程...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。