在学习python的过程中,网络编程是必不可少的一课。而网络编程中,最基础的课程就是socket编程。socket编程是一种高效的程序间传输数据的方式,很多语言都有提供socket的支持。python也提供了这样的技术支持。接下来的文章,小编将用一个socket的实际项目,来让各位小伙伴了解什么是socket网络编程。
什么是socket?
socket,中文翻译为套接字。它是一种对网络中不同主机上的应用进程(或者相同主机的不同应用进程)之间进行双向通信的端点的抽象。实际上就是两个网络各种通信连接中的端点。它的作用就是完成应用间的数据传输。
套接字技术简单的来讲就是通过socket,将两个应用进行连接,连接之后就能进行数据传输了。socket只是实现连接的方法。 小编认为套接字这个翻译并不能直接反映出这门技术的特点(过于生涩),socket可以被翻译为插座,而实际上套接字技术更像是软件上的“插座”和“插头”。汉语中的套接,是一种水管对接的技术,使用一个套接管将两端的水管连接起来,这种技术就叫套接,所以是不是能理解什么是套接字了呢?
更多关于socket协议的介绍,可以前往websocket协议进行查看。
怎么使用socket?
不同语言实现套接字的方式不同,python有专门实现套接字的包。只需要import
相应的包,就可以进行套接字编程。
创建socket连接后可以通过recv()
和send()
的方法来获取和发送socket之间传输的数据。
接下来就用一个实例代码来介绍一下怎么使用socket吧!
python项目实战
server.py
# 导入 socket模块
import socket
# 创建 socket 对象
serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
port = 9999
# 绑定端口
serversocket.bind((host, port))
# 设置最大连接数,超过后排队
serversocket.listen(5)
while True:
# 建立客户端连接
clientsocket, addr = serversocket.accept()
print("连接地址: %s" % str(addr))
msg = '欢迎访问W3Cschool教程!' + "\r\n"
clientsocket.send(msg.encode('utf-8'))
clientsocket.close()
client.py
# 导入 socket 模块
import socket
# 创建 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置端口号
port = 9999
# 连接服务,指定主机和端口
s.connect((host, port))
# 接收小于 1024 字节的数据
msg = s.recv(1024)
s.close()
print(msg.decode('utf-8'))
如果理解不了socket代码,也可以前往python网络编程进行学习。
小结
以上就是python实现socket通信的方法。掌握socket通信对于python的多端开发(比如服务器客户端,或者两个点对点应用)是十分重要的,各位小伙伴一定要好好学习啊。