第十一章:网络通信-socket:网络通信-用户数据报客户和服务器-回送服务器

    xiaoxiao2022-07-13  156

    11.2.3 用户数据报客户和服务器 用户数据报协议(User Datagram Protocol,UDP)的工作方式与TCP/IP不同。TCP是一个面向流(stream-oriented)的协议,确保所有数据以正确的顺序传输,而UDP是一个面向消息(message-oriented)的协议。一方面,UDP不需要一个长期活动的连接,所以建立UDP套接字稍简单一些。另一方面,UDP消息必须放在一个数据报中(对于IPv4,这意味着它们可以包含65507个字节,因为65535个字节大小的数据包还包括首部信息),而且无法得到TCP所能提供的传输保障。

    11.2.3.1 回送服务器 由于实际上并没有连接,所以服务器并不需要监听和接收连接。它只需要使用bind()将其套接字与一个端口关联,然后等待各个消息。

    import socket import sys # Create a UDP socket. sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # Bind the socket to the port. server_address = ('localhost',10000) print('starting up on {} port {}'.format(*server_address)) sock.bind(server_address) while True: print('\nwaiting to receive message') data,address = sock.recvfrom(4096) print('received {} bytes from {}'.format( len(data),address)) print(data) if data: sent = sock.sendto(data,address) print('sent {} bytes back to {}'.format( sent,address))

    使用recvfrom()从套接字读取消息,这个函数会返回数据,还会返回发出这个数据的客户的地址。

    最新回复(0)