乐趣区

关于人工智能:71-套接字socket

套接字(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

退出移动版