我正在接受客户端的连接,并将已连接的套接字传递给另一个对象,但该套接字需要是非阻塞的。我尝试使用
getChannel().configureBlocking(false)
,但似乎并不起作用。它需要是非阻塞的,因为下面的方法每100毫秒调用一次。我应该用其他方式使其非阻塞吗?感谢任何帮助!public void checkForClients() {
DataOutputStream out;
DataInputStream in;
Socket connection;
InetAddress tempIP;
String IP;
try {
connection = serverSocket.accept();
connection.getChannel().configureBlocking(false);
System.err.println("after connection made");
in = new DataInputStream(connection.getInputStream());
out = new DataOutputStream(connection.getOutputStream());
tempIP = connection.getInetAddress();
IP = tempIP.toString();
System.err.println("after ip string");
// create a new user ex nihilo
connectedUsers.add(new ConnectedUser(IP, null, connection, in, out));
System.err.println("after add user");
} catch (SocketTimeoutException e) {
System.err.println("accept timeout - continuing execution");
} catch (IOException e) {
System.err.println("socket accept failed");
}
}