小编Ben*_*iah的帖子

如何在java中使接受的套接字无阻塞

我接受来自客户端的连接,然后将连接的套接字传递给另一个对象,但是,该套接字需要是非阻塞的.我正在尝试使用,getChannel().configureBlocking(false)但似乎没有用.它需要是非阻塞的,因为下面的方法每100ms调用一次.还有其他方法我应该做这个非阻塞?谢谢你的帮助!

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");
  }
}
Run Code Online (Sandbox Code Playgroud)

java sockets nonblocking

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×1

nonblocking ×1

sockets ×1