在学习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的多端开发(比如服务器客户端,或者两个点对点应用)是十分重要的,各位小伙伴一定要好好学习啊。