欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

程序员文章站 2022-03-06 10:20:32
因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以,大家把互联网的协议简称TCP/IP协议。 通信的时候,双方必须知道对方的标识,好比发邮件必须知道对方的邮件地址。互联网上每个计算机的唯一标识就是IP地址,类似 123.123.123.123。如果一台计算机同时接入到两 ......

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以,大家把互联网的协议简称TCP/IP协议。

通信的时候,双方必须知道对方的标识,好比发邮件必须知道对方的邮件地址。互联网上每个计算机的唯一标识就是IP地址,类似 123.123.123.123
。如果一台计算机同时接入到两个或更多的网络,比如路由器,它就会有两个或多个IP地址,所以,IP地址对应的实际上是计算机的网络接口,通常是网卡。

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

私信小编 01 可领取零基础入门视频一套!

许多常用的更高级的协议都是建立在TCP协议基础上的,比如用于浏览器的HTTP协议、发送邮件的SMTP协议等。

一个IP包除了包含要传输的数据外,还包含源IP地址和目标IP地址,源端口和目标端口。

端口有什么作用?在两台计算机通信时,只发IP地址是不够的,因为同一台计算机上跑着多个网络程序。一个IP包来了之后,到底是交给浏览器还是QQ,就需要端口号来区分。每个网络程序都向操作系统申请唯一的端口号,这样,两个进程在两台计算机之间建立网络连接就需要各自的IP地址和各自的端口号。

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

客户端

大多数连接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。

举个例子,当我们在浏览器中访问新浪时,我们自己的计算机就是客户端,浏览器会主动向新浪的服务器发起连接。如果一切顺利,新浪的服务器接受了我们的连接,一个TCP连接就建立起来的,后面的通信就是发送网页内容了。

所以,我们要创建一个基于TCP连接的Socket,可以这样做:

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

发送的文本格式必须符合HTTP标准,如果格式没问题,接下来就可以接收新浪服务器返回的数据了:

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

接收到的数据包括HTTP头和网页本身,我们只需要把HTTP头和网页分离一下,把HTTP头打印出来,网页内容保存到文件:

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

服务器

和客户端编程相比,服务器编程就要复杂一些。

服务器进程首先要绑定一个端口并监听来自其他客户端的连接。如果某个客户端连接过来了,服务器就与该客户端建立Socket连接,随后的通信就靠这个Socket连接了。

所以,服务器会打开固定端口(比如80)监听,每来一个客户端连接,就创建该Socket连接。由于服务器会有大量来自客户端的连接,所以,服务器要能够区分一个Socket连接是和哪个客户端绑定的。一个Socket依赖4项:服务器地址、服务器端口、客户端地址、客户端端口来唯一确定一个Socket。

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

连接建立后,服务器首先发一条欢迎消息,然后等待客户端数据,并加上Hello再发送给客户端。如果客户端发送了exit字符串,就直接关闭连接。

要测试这个服务器程序,我们还需要编写一个客户端程序:

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

需要注意的是,客户端程序运行完毕就退出了,而服务器程序会永远运行下去,必须按Ctrl+C退出程序。

小结

用TCP协议进行Socket编程在Python中十分简单,对于客户端,要主动连接服务器的IP和指定端口,对于服务器,要首先监听指定端口,然后,对每一个新的连接,创建一个线程或进程来处理。通常,服务器程序会无限运行下去。

同一个端口,被一个Socket绑定了以后,就不能被别的Socket绑定了。

源码:

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

UDP编程

TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议。

使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。

虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

想学Python编程?那就先把这些科普了吧!Python网络编程教程!

小结

UDP的使用与TCP类似,但是不需要建立连接。此外,服务器绑定UDP端口和TCP端口互不冲突,也就是说,UDP的9999端口与TCP的9999端口可以各自绑定。

sever.py

想学Python编程?那就先把这些科普了吧!Python网络编程教程!