2013-11-09 105 views
0

我試圖從這個網站server client code查找Java服務器時間和客戶端時間

它完美我的機器上的代碼,我第一次運行服務器代碼,然後客戶端代碼。 我得到了時間。 我試圖把服務器端代碼到另一臺電腦並在Eclipse中運行它在那裏,同樣我試圖從日食在我身邊運行的客戶端代碼,但沒有成功。 它給了我下面的錯誤:

Exception in thread "main" java.net.BindException: Cannot assign requested address: JVM_Bind 
    at java.net.DualStackPlainSocketImpl.bind0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.bind(Unknown Source) 
    at java.net.PlainSocketImpl.bind(Unknown Source) 
    at java.net.ServerSocket.bind(Unknown Source) 
    at java.net.ServerSocket.<init>(Unknown Source) 
    at sample.servertime.main(servertime.java:13) 

我這樣做是正確的或者是理解錯了什麼,我doing.Need幫助。 以下是2個代碼。

// Date Client 

import java.io.*; 
import java.net.*; 

class DateClient 
{ 
    publicstaticvoid main(String args[]) throws Exception 
    { 
     Socket soc=new Socket(InetAddress.getLocalHost(),5217);   
     BufferedReader in=new BufferedReader(
       new InputStreamReader(
         soc.getInputStream() 
         ) 
        ); 

     System.out.println(in.readLine()); 
    }  
} 



// Date Server 

import java.net.*; 
import java.io.*; 
import java.util.*; 

class DateServer 
{ 
    publicstaticvoid main(String args[]) throws Exception 
    { 
     InetAddress locIP = InetAddress.getByName("192.168.1.21"); 
     ServerSocket s= new ServerSocket(5217, 0, locIP); 

     while(true) 
     { 
      System.out.println("Waiting For Connection ..."); 
      Socket soc=s.accept(); 
      DataOutputStream out=new DataOutputStream(soc.getOutputStream()); 
      out.writeBytes("Server Date" + (new Date()).toString() + "\n"); 
      out.close(); 
      soc.close(); 
     } 

    } 
} 

回答

1

在服務器部分你硬編碼的IP地址,爲服務器:

InetAddress locIP = InetAddress.getByName("192.168.1.21"); 
ServerSocket s= new ServerSocket(5217, 0, locIP); 

當你在另一臺機器上運行它的地址將是不同的,因此它不能除非你改變它。
你可以改變它綁定到像所有地址:

ServerSocket s = new ServerSocket(5217); 

此外,客戶端將始終嘗試連接到本地機器:

Socket soc=new Socket(InetAddress.getLocalHost(),5217); 

所以,如果你想擁有的客戶端連接到另一臺機器上的服務器InetAddress.getLocalHost()必須更改爲服務器的地址。

+0

是的,我看到了同樣的錯誤,我檢查out..Now我得到的連接超時 –

+0

@ user2958963你有運行的服務器和客戶端機器之間的連接?任何防火牆阻止傳入請求也許? – jpw

+0

我應該怎麼辦,這樣的日期和時間,如果你改變了服務器類使用'ServerSocket的S =新的ServerSocket(5217)獲得顯示在客戶機上以及 –

相關問題