我有一个Swing客户端,它有一个连接和取消按钮,因此它可以尝试连接到服务器或结束当前连接。我正在努力使客户端可以连接到服务器,结束连接,然后再次连接到服务器。
我的理解是,通常当客户端和服务器结束连接而不管是谁结束它时,客户端会关闭其流和套接字。显然,它们不能被重用于另一次连接尝试。现在我将Socket和流变量作为私有实例变量和连接到服务器的方法创建一个新套接字,然后打开和关闭流的方法。
只是想知道通常如何处理这样的事情。我想过有一个非常棒的方法可以创建新的套接字,流和处理流和套接字的所有通信和关闭,但它看起来很混乱。或者可能有一个新线程创建所有内容,然后当通信结束时终止线程。
赞赏的想法。
答案 0 :(得分:1)
- 当客户端连接到服务器时,在服务器端创建单独的线程。
- 将读取和写入的流程执行到{strong>特定客户端的client socket
进入该特定线程。
- 然后在完成后终止客户端线程。
- 如果您再次尝试连接它,新主题将跨越。
- 您始终可以创建HashMap
以保持客户端套接字与线程关系的标签。
答案 1 :(得分:0)
您应该将所有“逻辑”放在一个不同于GUI的新类中。
然后因为你有2个按钮,你的Gui类应该能够在逻辑类上调用至少2个方法:connect()
和disconnect()
。然后在这些方法中,您可以处理连接到服务器,打开/关闭流等所需的所有工作......
如果您计划添加功能,这将使您的代码更清晰,更易于维护,并且可能更具进化性。
答案 2 :(得分:0)
我更希望为每个套接字创建创建一个线程,并使用该线程处理请求和响应。