如何查看套接字是否已连接到我的服务器?

时间:2016-12-21 00:40:38

标签: java sockets server client client-server

我正在用java编写客户端/服务器应用程序。此代码是否正确以检查客户端的某个套接字是否已连接到我的服务器?我很新,这是我的第一款具有这种特性的应用,所以不要杀了我......

package ServerCommunication;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;


public class MultiServer {

    public void openSocket() throws IOException {
        ServerSocket serverSocket = null;
        boolean listening = true;
        MultiServerThread w=null;
        try {
            serverSocket = new ServerSocket(1633);
            System.out.println("Waiting on 1633.");
        } catch (IOException e) {
            System.err.println("Could not listen on port: 1633.");
            System.exit(-1);
        }

        while (listening) {
            System.out.println("Hearing");
            Socket mysocket=serverSocket.accept();
            if(mysocket.isConnected())
                System.out.println("Already connected");
            else{
                System.out.println("Need to create one");
                w = new MultiServerThread(mysocket);
                Thread t = new Thread(w);
                t.start();
                    }
        }

        serverSocket.close();
        System.out.println("Multiserver closed");
    }
}

1 个答案:

答案 0 :(得分:0)

没有

while (listening) {
    System.out.println("Hearing");
    Socket mysocket=serverSocket.accept();

执行此行代码的结果是连接到客户端的IOExceptionSocket

    if(mysocket.isConnected())

毫无意义的。它是连接的。删除。

        System.out.println("Already connected");

当然它是连接的。这就是accept()的用途。删除。

        else{

不可达。删除。

            System.out.println("Need to create one");

不,不。删除。

            w = new MultiServerThread(mysocket);
            Thread t = new Thread(w);
            t.start();

这一切都毫无意义。删除。