套接字(socket)是计算机之间进行通信的一种技术,它容许不同主机上的过程之间进行数据交换。在 Python 中,咱们能够应用 socket
模块来创立和应用套接字。
首先,咱们须要导入 socket
模块:
import socket
在网络编程中,有两种次要类型的套接字:流套接字(Stream Sockets)和数据报套接字(Datagram Sockets)。流套接字应用传输控制协议(TCP)进行通信,而数据报套接字应用用户数据报协定(UDP)进行通信。咱们将次要关注 TCP 套接字,因为它们更罕用且提供了牢靠的双向通信。
创立套接字
要创立一个 TCP 套接字,咱们能够应用 socket.socket()
函数:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
这里,socket.AF_INET
示意咱们应用 IPv4 地址,socket.SOCK_STREAM
示意咱们应用 TCP 协定。
绑定套接字
创立套接字后,咱们须要将其绑定到一个地址和端口。这能够应用 bind()
办法实现:
address = ('localhost', 12345)
s.bind(address)
这里,咱们绑定了套接字到本地地址(’localhost’)和端口(12345)。
监听连贯
在绑定套接字后,咱们须要开始监听客户端的连贯。咱们能够应用 listen()
办法来实现这一点:
s.listen(5)
这里的数字 5
示意容许的最大连接数。
承受连贯
当有客户端尝试连贯时,咱们能够应用 accept()
办法来承受连贯。这将返回一个新的套接字对象和客户端地址:
client_socket, client_address = s.accept()
发送和接收数据
当初咱们曾经建设了连贯,能够应用 send()
和recv()
办法发送和接收数据。例如:
data = client_socket.recv(1024) # 接管最多 1024 字节的数据
client_socket.send(b'Hello, client!') # 发送数据
请留神,咱们须要应用字节类型的数据进行通信。
敞开套接字
通信实现后,咱们须要敞开套接字以开释资源。咱们能够应用 close()
办法来实现这一点:
client_socket.close()
s.close()
这就是一个简略的 TCP 套接字服务器的根本构造。为了让您更好地了解,这里有一个残缺的示例:
TCP 服务器示例
import socket
def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
address = ('localhost', 12345)
s.bind(address)
s.listen(5)
print("Waiting for connections...")
client_socket, client_address = s.accept()
print(f"Connected to {client_address}")
data = client_socket.recv(1024)
print(f"Received: {data}")
client_socket.send(b'Hello, client!')
client_socket.close()
s.close()
if __name__ == '__main__':
main()
这个示例展现了如何创立一个简略的 TCP 服务器,它承受来自客户端的连贯和数据,并向客户端发送一条音讯。您能够依据本人的需要批改这个示例,以实现不同的性能。
举荐浏览:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g