Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 事件或超时后返回值_Java_Multithreading_Architecture_Return - Fatal编程技术网

Java 事件或超时后返回值

Java 事件或超时后返回值,java,multithreading,architecture,return,Java,Multithreading,Architecture,Return,我想向远程主机发送一个包含登录凭据的字符串。服务器应在短时间后发送回登录已接受或登录已拒绝。如果出现这种情况,我想返回true或false。如果在给定的超时时间内没有收到应答,我想返回false 不幸的是,我不知道怎么做 这是一个实验项目,所以登录凭证的传输不安全并不重要 相关代码: 公共类客户端实现可关闭的DataSender{ 受保护的请求处理程序请求处理程序; 受保护线程clientThread; 受保护的打印作者打印作者; 公共最终整数登录\u超时=5000; 公共ClientNetAd

我想向远程主机发送一个包含登录凭据的字符串。服务器应在短时间后发送回登录已接受或登录已拒绝。如果出现这种情况,我想返回true或false。如果在给定的超时时间内没有收到应答,我想返回false

不幸的是,我不知道怎么做

这是一个实验项目,所以登录凭证的传输不安全并不重要

相关代码:

公共类客户端实现可关闭的DataSender{ 受保护的请求处理程序请求处理程序; 受保护线程clientThread; 受保护的打印作者打印作者; 公共最终整数登录\u超时=5000; 公共ClientNetAddress地址,RequestHandler RequestHandler{ this.requestHandler=requestHandler; // ... 这是令人震惊的倾听; // ... } 受保护的空听{ this.clientThread=新线程->{ 试一试{ Scanner Scanner=new Scannerthis.socket.getInputStream,StandardCharsets.UTF_8.name; this.printWriter=new PrintWriternew outputstreamwriter this.socket.getOutputStream,StandardCharsets.UTF_8.name; 弦线; 在这个时候,我在跑步{ line=scanner.nextLine; 开关线{ 接受案例登录: //待办事项 打破 案例登录被拒绝: //待办事项 打破 // ... } } }捕捉异常{ System.err.PrintLn无法连接到服务器。; e、 打印跟踪; } }; this.clientThread.setDaemontrue; this.clientThread.run; } 公共布尔登录字符串用户,字符串密码{ 字符串数据=登录\n用户=+用户+\n+密码=+密码; 这是发送数据; //待办事项 返回false; } 受保护的无效发送字符串数据{ this.printWriter.writedata; } // ... } 设置超时:

读取将只阻塞一段时间,然后引发sockettimeoutexception。在sockettimeout的catch块中,返回false


这与套接字打开超时不同。

因此。。。如果它工作不正常,它在做什么?如果服务器响应到达,我不知道如何返回true或false;如果登录前超时,我不知道如何返回false。。。在开始等待之前,您需要启动一个计时器,或者安排任务,如果收到响应,则取消它。如果不取消启动,可以关闭连接,这将唤醒等待的线程。