【问题标题】:How do I interrupt a client via server request?如何通过服务器请求中断客户端?
【发布时间】:2014-05-09 18:47:51
【问题描述】:

我有一个客户端进程正在运行并执行一些stuff,在某些时候,当服务器决定并发送请求时,我希望客户端停止它正在做的任何事情并改为执行other_stuff,客户端伪:

public static void main(String args[])
{
   registerInterruptHandler(other_stuff);
   stuff();
}

void stuff()
{
    // Do stuff
}

void other_stuff()
{
    // Do other stuff
}

服务器伪:

void interrupt_client(client_ip_address)
{
     send_message_to_client(client_ip_address);
}

我的问题是:

  1. 如何从服务器发送请求?我不能使用 http 请求,因为客户端没有运行 http 服务器,我必须使用套接字吗?还是有一些其他的 Apache 库可以使它更容易?

  2. 如何在客户端异步接收消息?

【问题讨论】:

    标签: java client-server


    【解决方案1】:
    • 如何从服务器发送请求?我不能使用 http 请求,因为客户端没有运行 http 服务器,我必须使用套接字吗?还是有一些其他的 Apache 库可以使它更容易?

    是的,这对套接字很有用。 Apache 确实有一些有用的工具可以帮助解决这个问题,但是实现一个基本的服务器客户端套接字连接本身并不难

    • 如何在客户端异步接收消息?

    这部分介绍了如何实现线程以及从服务器发送/接收数据。你应该把你的工作分解成两部分

    1. 创建客户端和服务器连接。构建从服务器发送和接收数据所需的所有功能,构建一些调用,让客户端知道他们需要处理 other_stuff

    2. 创建other_stuffstuff 和套接字连接所需的线程。这至少包含 2 个线程,1 个用于套接字连接,1 个用于 stuffother_stuff。根据stuffother_stuff 的内容,您可能希望将它们分成2 个不同的线程,这些线程使用Thread.notifyThread.wait 在套接字连接接收到正确消息时相互中断。

    这两个主题都有很多在线教程和代码示例,所以我不会在这里制作任何内容。但正如我所说,将您的项目分成两部分,这样构建起来会更容易。我认为一个很好的起点可能是创建您的客户端并通过使用System.in 来模拟您的服务器以获取来自服务器的“pretend”响应

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 2020-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 2016-03-19
      相关资源
      最近更新 更多