我正在尝试编写一个不断通过UDP监听数据包的程序,但也会定期通过UDP(每隔x秒)发送数据。棘手的部分是我收到的数据会改变我发出的数据,所以我认为我不能简单地在一个单独的线程中执行其中一项任务。我也承受不起阻挡。我希望有人能给我一个正确的方向。如果它是相关的,我使用Java编程,并且将一次发送和接收多个客户端的数据。
答案 0 :(得分:0)
我认为我不能简单地在一个单独的线程中执行其中一项任务。
您仍然可以使用recv并在单独的线程中发送。但它们不可能异步发生。如果您发出的数据将取决于您收到的数据,那么您不能异步发送/ recv。这是一个请求/响应模型。只有在收到请求后才能发送响应。
我也承受不起阻止
您仍然可以为非阻止
设置套接字答案 1 :(得分:0)
虽然您可以使用单独的线程,但您可以使用与套接字关联的简单超时来执行此单线程:
按照此处的示例:
set timeout for socket receive
当套接字抛出超时异常时,你会定期发送,然后返回接收套接字上的数据。