【问题标题】:Java Equivalent Method to Test TCP Connection测试 TCP 连接的 Java 等效方法
【发布时间】:2011-10-20 08:03:30
【问题描述】:

在 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 新手,所以我希望有人可以用等效的方法帮助我执行此操作。

【问题讨论】:

    标签: c# java tcp tcpclient


    【解决方案1】:

    这是我想出的:

    仅供参考,在 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;
    }
    

    【讨论】:

    • 感谢您的帮助。我会做一些改变。添加:'client1.setReuseAddress(true)' 更改:'client1.bind() => client1.connect()' 'serverReturnString = String.valueOf(bytes);' => 'serverReturnString = new String(response);'
    猜你喜欢
    • 2015-07-07
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多