我正在制作一个应用程序,其工作方式与实时聊天非常相似。用户会不断写作,让我们说一个文本区域,并将消息发送给其他用户。在通信班上,我设立了一个接收器。当某人的消息到达客户端时,将调用receive方法并获取消息。我不明白的是代码将如何执行。如果在用户输入/发送消息时调用接收消息,会发生什么?我需要做什么才能使其正常工作? 希望这个问题很清楚。处理Java Interupts
ps:我仍然处于设计阶段,这就是为什么我没有测试它看看会发生什么。 atm我只使用第二个线程来接收调用接收方法的消息。
我正在制作一个应用程序,其工作方式与实时聊天非常相似。用户会不断写作,让我们说一个文本区域,并将消息发送给其他用户。在通信班上,我设立了一个接收器。当某人的消息到达客户端时,将调用receive方法并获取消息。我不明白的是代码将如何执行。如果在用户输入/发送消息时调用接收消息,会发生什么?我需要做什么才能使其正常工作? 希望这个问题很清楚。处理Java Interupts
ps:我仍然处于设计阶段,这就是为什么我没有测试它看看会发生什么。 atm我只使用第二个线程来接收调用接收方法的消息。
应该没有问题。
当某人的消息到达客户端时,将会调用接收方法 并将获得该消息。我不明白的是 代码将如何执行?
您应该有一个Receiver类来封装套接字(从中接收数据)并保留一组侦听器(请参阅Observer pattern)。 GUI可以是听众之一。当通过套接字接收到消息时,您需要通过转发收到的数据来通知所有听众。这样,你就有了一个干净而好的方式来通知GUI关于新消息的到达。
如果在用户输入/发送消息时调用接收消息 会发生什么?
这取决于你使用的IP协议的类型,但一般你不必担心这个,虽然我建议你使用lock机制保护您的插座。
我需要做些什么才能使其正常工作? 这里是一个很好的example,可以给你一些启发:)
编辑:至于你的问题关于执行流程,发送和接收都可以在同一时间发生两个不同且不相关的操作。这可以通过在两个不同的线程中实现发送和接收操作来实现。这是一个article套接字通信和多线程。
您应该执行传统Java EE应用程序服务器所做的操作,即为每个传入消息分配一个单独的线程,或尝试沿着Netty的线路尝试Java NIO解决方案。
传入消息将被简单地读取并发送到正确的面板以显示它们。将显示传入消息的同一个面板将接收要发送消息的输入。此操作需要两个线程? – Giannis
你能描述一下“用户在输入/发送信息时”的含义吗?这是一个控制台模式程序吗?如果它是一个GUI程序,那么你将使用某种事件驱动的框架,所以没有“while”。您只需获取用户按键事件,然后决定如何处理每个事件。 –