用于测试TCP连接的Java等效方法

时间:2011-08-04 19:51:48

标签: c# java tcp tcpclient

在C#中测试UltraVNC是否已启动并在本地计算机上运行我会这样做

public static bool TestAvailablility(int port, string responseStartsWith)
        {
            bool toReturn = false;

            try
            {
                using (TcpClient client1 = new TcpClient())
                {
                    client1.ReceiveTimeout = 10000;
                    client1.SendTimeout = 10000;
                    client1.Connect("localhost", port);

                    using (NetworkStream stream = client1.GetStream())
                    {
                        Byte[] response = new Byte[4096];
                        Int32 bytes = 0;
                        string serverReturnString = null;
                        bytes = stream.Read(response, 0, response.Length);
                        serverReturnString = System.Text.Encoding.ASCII.GetString(response, 0, bytes);

                        Console.WriteLine("TestAvailablility: serverReturnString = {0}", serverReturnString);
                        if (serverReturnString.StartsWith(responseStartsWith, StringComparison.OrdinalIgnoreCase))
                        {
                            toReturn = true;
                        }
                    }
                }
            }
            catch (Exception ex) // SocketException for connect, IOException for the read.
            {
                Console.WriteLine("TestAvailable - Could not connect to VNC server.  Exception info: ", ex);
            }

            return toReturn;
        }

我是Java的新手,所以我希望有人可以帮助我使用等效方法来执行此操作。

1 个答案:

答案 0 :(得分:3)

以下是我提出的建议:

仅使用Eclipse + Java API中的自动完成功能,您可以非常轻松地将C#转换为Java。

public static boolean testAvailablility(int port, String responseStartsWith) {
    boolean toReturn = false;

    try {
        Socket client1 = new Socket();
        client1.setSoTimeout(10000);
        client1.bind(new InetSocketAddress("localhost", port));
        InputStream stream = client1.getInputStream();
        byte[] response = new byte[4096];
        int bytes = 0;
        String serverReturnString = null;
        bytes = stream.read(response, 0, response.length);
        serverReturnString = String.valueOf(bytes);
        System.out.println("TestAvailablility: serverReturnString = {0} " + serverReturnString);
        if (serverReturnString.toLowerCase().startsWith(responseStartsWith.toLowerCase()))
            toReturn = true;
    } catch (Exception ex) // SocketException for connect, IOException for
                            // the read.
    {
        System.out.println("TestAvailable - Could not connect to VNC server.  Exception info: ");
        ex.printStackTrace();
    }

    return toReturn;
}