在正式的走入网络编程之前我们首先一起来认识一下什么是网络编程。
网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。
Tcp
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在使用tcp方式通信时,在客户端和服务器端通信之前首先要进行三次握手。
第一次握手:客户端给服务器端发送一个验证的数据包。
第二次握手:服务器响应发回给客服端一个客户端的数据包和自己的数据包,这时候,如果客服端拿到响应回来的数据包然后发现客服端的数据包和自己发过去的数据包一致那么进行第三次握手,不同则建立连接失败。
第三次握手:客服端拿到响应的数据包以后对比两个验证的客服端数据包一致,则返回服务器数据包,服务器拿到数据包再次对比,这个时候,也就是客服端在告诉服务器,我们之间的通信时安全可靠的,建立连接成功了,可以进行数据通信了。
tcp在通信结束以后会有一个阶段,那就是四次挥手,也就是说在你认为的通信结束以后,客服端和服务器自己默默的做了这个操作,一切都是为了通信的安全。
Udp
udp是一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。这种方法相对于tcp是一种不安全不可靠的传输方法。
Socket
socket就是一个网络通信的套接字,所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。
Socket中的方法:
方法 | 用途 |
socket | 创建套接字 |
bind | 绑定本地的指定端口 |
sendto | udp方式发送信息 |
recvfrom | udp方式接受数据 |
close | 关闭套接字 |
connecct | tcp连接服务器 |
send | tcp发送数据 |
recv | tcp接收数据 |
setsockopt | 释放端口信息 |
listen | 使套接字编程监听套接字 |
accept | 等待客服端链接 |
python网络编程
python中进行网络编程之前,首先要导入socket: from socket import * (在真正的开发中不要用这种方式导入,我们这里是为了寻求方便) 。
上面我们依次介绍了Tcp、Udp、Socket,所谓的python网络编程,就是在python中将我们上述的这些知识串通来使用,我将通过几个案例来说明:
Udp通信:
python代码 :
测试(使用网络测试的工具软件):
Tcp通信
python代码:
测试
*说明:python Tcp通信是我们发给服务器的,Server收到了是服务器返回的,因为我写的代码只能够通信一次,所有无法截图服务器端。
在python的学习中,我们不只是学到了python的代码,更是学到了很多其他方面的知识,tcp通信的方式,我只是编写了客服端的,大家也可以自己编写tcp服务器端,其实并没有那么难,简单入门还是没有问题的,合理的使用循环,listen关键字,accept关键字,再配上一些多任务,做出一个简单的聊天器,还很容易。
python代码:
测试:
上面的案例就是一个非常简单的Tcp服务器案例,实现了循环的接收数据,应答客服端(本人懒,做的是自动回复)。
作为一个技术人,只有不断地提升自己,才能更好的帮助别人,这篇简单的python网络编程入门,希望对你有帮助。