我正在编写一个并发服务器,它应该有一个通信通道和一个数据通道。
客户端最初连接到通信通道进行身份验证,成功后,客户端将连接到数据通道以访问数据。
我的程序已经实现了这一点,并且我正在使用线程。唯一的问题是,如果我尝试连接另一个客户端,我会收到“无法绑定:地址已在使用中”的错误。
我的实现方式如下:
第一部分:
客户端连接到4567端口(并输入登录信息)。为处理每个连接的客户端生成一个线程。在线程中创建一个函数(我们称之为FUNC_A),用于检查客户端的登录信息(不必担心如何进行检查)。如果成功,则线程启动数据服务器(监听8976端口),然后向客户端发送OK消息。一旦收到OK消息,客户端便会尝试连接到数据服务器。
第二部分:
一旦客户端连接到数据服务器,从FUNC_A内部接受客户端并生成另一个线程来处理客户端与数据服务器的连接(希望一切都很清楚)。
现在,所有这些都运行良好。但是,如果我尝试连接第二个客户端,当它到达第二部分时,我会收到“无法绑定错误:地址已在使用中”的错误。我尝试了很多不同的方法,甚至尝试生成一个线程来启动数据服务器并接受客户端,然后启动另一个线程来处理该连接。但是仍然没有成功。
请给我提供建议,告诉我我做错了什么,如何实现或最佳实现方式。谢谢。
客户端最初连接到通信通道进行身份验证,成功后,客户端将连接到数据通道以访问数据。
我的程序已经实现了这一点,并且我正在使用线程。唯一的问题是,如果我尝试连接另一个客户端,我会收到“无法绑定:地址已在使用中”的错误。
我的实现方式如下:
第一部分:
客户端连接到4567端口(并输入登录信息)。为处理每个连接的客户端生成一个线程。在线程中创建一个函数(我们称之为FUNC_A),用于检查客户端的登录信息(不必担心如何进行检查)。如果成功,则线程启动数据服务器(监听8976端口),然后向客户端发送OK消息。一旦收到OK消息,客户端便会尝试连接到数据服务器。
第二部分:
一旦客户端连接到数据服务器,从FUNC_A内部接受客户端并生成另一个线程来处理客户端与数据服务器的连接(希望一切都很清楚)。
现在,所有这些都运行良好。但是,如果我尝试连接第二个客户端,当它到达第二部分时,我会收到“无法绑定错误:地址已在使用中”的错误。我尝试了很多不同的方法,甚至尝试生成一个线程来启动数据服务器并接受客户端,然后启动另一个线程来处理该连接。但是仍然没有成功。
请给我提供建议,告诉我我做错了什么,如何实现或最佳实现方式。谢谢。