我想用java來製作聊天信使,它將在局域網上工作。 在客戶端我有:java網絡:如何獲得服務器的IP:
Socket socket=new Socket(serverIP, port);
如何理解什麼是服務器IP,在其上的ServerSocket正在等待進入的連接
這是一個非常小的網絡計算機的IP地址:1級的服務器和1客戶端,交叉電纜網絡
我想用java來製作聊天信使,它將在局域網上工作。 在客戶端我有:java網絡:如何獲得服務器的IP:
Socket socket=new Socket(serverIP, port);
如何理解什麼是服務器IP,在其上的ServerSocket正在等待進入的連接
這是一個非常小的網絡計算機的IP地址:1級的服務器和1客戶端,交叉電纜網絡
我不想練習網絡編程,它是一個真正的程序,並將成爲商業。但無論如何只有2臺電腦將通過交叉電纜進入網絡。由於該程序將安裝在不同的計算機上,因此我在編程時不知道服務器的IP,因此無法預定義。現在我正在尋找一種方式,我自己的程序可以在本地網絡中找到服務器的IP,並且可以連接到服務器。所以它不能通過參數傳遞給客戶端,因爲它是未知的,程序必須找到...我終於找到了2個偉大的方法來自動找到它的服務器主機名和用戶是不會給節目中,我們發現我們的本地主機名的任何IP或任何信息......
所有1.首先:
InetAddress.getLocalHost().getHostName();
然後我們運行這個命令行:
net view
這個返回名稱當前在網絡中的主機(在我的情況下是LAN網絡),現在就像我們當地的h一樣OST的名字和所有的主機名,我們可以找到其他的主機(這絕對是我的情況下,服務器,因爲只有2網絡中的計算機...)名稱等輕鬆連接到:
Socket socket=new Socket(InetAddress.getByName(SERVER_NAME),port);
2.客戶端也可以通過multicastsocket獲取服務器的IP。所有的客戶端和服務器都加入到一個預定義的IP組中,並且服務器將它的IP發送給所有的接收者(=客戶端)。
套接字類用於客戶端,因此這將是您要連接到的服務器的IP。
見http://docs.oracle.com/javase/1.4.2/docs/api/java/net/ServerSocket.html和http://docs.oracle.com/javase/1.4.2/docs/api/java/net/Socket.html
好的,如何知道服務器的IP是什麼? – SAndroid
詢問提供服務的人員。通常你使用一個像「www.stackoverflow.com」這樣的主機名而不是一個IP地址。 –
@db我建議使用Java 7的鏈接;) –
客戶必須知道服務器IP - 它必須被預定義。客戶可以找到它沒有什麼神奇的方式。所以,你可以:
如果你的局域網路由器DHCP設置,你的IP時傳遞的服務器IP作爲命令行參數地址會隨着時間的推移而變化,所以第二個變種更好。我想商業聊天客戶端有一個衆所周知的URL/IP硬編碼或類似的,他們從中獲得聊天服務器地址。
在this C# example通過在同一臺機器上運行這個問題被繞過,但您可以看到客戶端具有硬編碼的「服務器IP」。
在this VB example IP正在由用戶輸入。
編輯:
客戶Socket(因爲你寫的)連接到服務器ServerSocket。 ServerSocket知道客戶端Socket IP地址,因爲客戶端只是從該IP地址連接到它!如果你不明白這一點,請閱讀(自己嘗試)這excellent tutorial。
「把它作爲一個參數」:
讓我們假設你有一個名爲‘項目’的文件夾,裏面一個名爲‘mypackage的’和裏面一個名爲HelloWorld.class的文件夾。 HelloWorld.class的是HelloWorld.java,Java源文件看起來像這樣編譯Java類文件:
package mypackage;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("You entered the following arguments from the command line:");
for (int i = 0; i< args.length; i++) {
System.out.println(args[i]);
}
}
地方自己在項目目錄和寫:
java mypackage.HelloWorld commandlineArgument1 commandlineArgument2
它將打印:
You entered the following arguments from the command line:
commandlineArgument1
commandlineArgument2
A tutorial爲此。
3反對!對不起,爲什麼? – SAndroid