[*]1. Create a client.
[*]2. Create a server.
[*]3. Close firewall on Linux.
[/list]
[b]1. Create a client[/b]
package com.chris.client;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket client = new Socket( "192.168.104.164", 8888 );
System.out.println( client.isBound() );
PrintStream writer = new PrintStream( client.getOutputStream() );
writer.println(" HelloLinux, I'm come from Windows environment");
writer.close();
}
}
[b]2. Create a Server[/b]
package com.chris.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public void createServer() throws IOException, InterruptedException {
ServerSocket server = new ServerSocket( 8888 );
Socket s = server.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(s
.getInputStream()));
char[] buffer = new char[1024];
StringBuilder sb = new StringBuilder(1024 * 1024);
int size = -1;
while ((size = reader.read(buffer)) != -1) {
String temp = new String(buffer, 0, size);
sb.append(temp);
}
System.out.println( sb.toString());
reader.close();
}
public static void main(String[] args) {
Server server = new Server();
try {
server.createServer();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
以上的程序如果只是在本地測試,那麼可以正常的通過, 但是當我把服務器程序放到Linux系統下(另外一臺機器), 而Client部分放到Windows平臺下跑時,系統就包下面的異常了
Exception in thread "main" java.net.NoRouteToHostException: No route to host: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:179)
at com.chris.client.Client.main(Client.java:14)
後面通過查找相關資料, 發現是Linux防火牆沒有關的的原因導致的。
[b]3. Close firewall on Linux[/b]
到Shell窗口下,鍵入service iptables stop, 重新聯接, OKay了
如果要重新啓動防火牆則輸入service iptables start
總結:
是否有其它的方式沒有, 如果有, 請不賜教:)