如何在Java中构建线程TCP客户端

时间:2011-03-19 14:23:36

标签: java tcpclient

我需要用Java编写一个线程化的TCP客户端,但我不确定如何最好地构建它。我希望客户端在另一个线程上运行,以便不阻塞主线程。

理想情况下,我会在主线程上创建客户端,然后指示客户端连接到服务器。可能需要一些时间的连接将在另一个线程上发生。一旦客户端连接,它将通知主线程并开始侦听来自服务器的传入消息。收到消息后会通知主线程。

目前我的计划是让TCP客户端类实现Runnable并在run方法中执行连接和接收。

我很感激有关如何构建tcp客户端的任何想法。

2 个答案:

答案 0 :(得分:1)

构建您的应用程序时应考虑的一些事项:
理想情况下,应该有单独的线程来读写网络流。否则可能会有问题。
2.如果您想“通知”其他线程有关某事或传递某些内容,请考虑Java“条件”习语/对象和/或阻塞队列/ Deques。

答案 1 :(得分:0)

查看JBoss Netty并使用符合您需求的Queue实现处理线程之间的通信。

Netty有一个引导学习曲线,但它有一个易于维护的设计,并且只要你不需要UDP传输(然后我会看看Apache Mina)它就足够了。此外,您不需要使用Netty实现状态机。