onreceive_onreceive什么意思_services

onreceive_onreceive什么意思_services

在服务器端同时调用OnReceive与OnAccept处理客户端连接请求时,会遇到OnAccept有响应,但在接收到客户端消息时,OnReceive却无响应的情况。这主要与多路复用机制有关,即服务器如何同时处理多个客户端连接。当服务器创建两个socket,A用于监听,B用于接收数据,这种配置是为了实现并发处理功能。A监听指定端口,等待客户端连接请求,而B则专用于接收来自A连接的客户端发来的数据。在服务器端设置A.Create(port,SOCK_STREAM,LocalIP),A.Listen(10)后,A即开始监听端口,等待客户端连接。同时,创建B.Create(0,SOCK_STREAM,LocalIP),这里B的端口号为0,表示它会使用与A相同的端口。客户端socketC尝试连接服务器端,连接成功后向服务器发送消息。此时,A的OnAccept函数会响应,表示客户端连接已建立。接着,B的OnReceive函数接收到客户端发送的消息,因为B被配置为在A连接的端口接收数据。关键在于B的配置使其能够接收所有在A端口上连接的客户端发来的数据,而不仅仅是A直接连接的。当客户端向服务器发送消息时,消息直接被发送到A监听的端口上,然后由B接收处理。因此,尽管消息是由客户端发送给A的,但由于B的配置和多路复用机制,B可以响应并处理这些消息。总之,OnReceive与OnAccept之间的关系在于它们在服务器端并发处理客户端连接请求和数据传输。OnAccept用于响应客户端的连接请求,而OnReceive用于接收并处理客户端发送的数据。通过合理配置socket,服务器能够高效地管理多个并发连接。