2011-08-04 14 views
1

在C#中,以測試的UltraVNC上漲和本地機器上運行,我會做這個相當於Java的方法來測試TCP連接

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所以我希望有人能幫助我用等效的方法來執行此操作。

回答

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; 
} 
+1

謝謝你的幫助。我會做出一些改變。 添加: 'client1.setReuseAddress(真)' 變化: 'client1.bind()=> client1.connect()' 'serverReturnString =將String.valueOf(字節);' =>'serverReturnString = new String(response);' – GEverding