現在Java.netを使って二台のパソコンでやり取りをするプログラムを作りたいのですが、クライアント側のパソコンがサーバー側にうまく接続できずにタイムアウトしてしまいます。
ネットワークに関する知識自体殆どないので、詳しく説明していただけるととても助かります。
該当のソースコード
server側
java
1import java.net.InetAddress; 2import java.net.ServerSocket; 3import java.net.Socket; 4 5import org.omg.CORBA.portable.UnknownException; 6 7public class Ntwk02 { 8 9 public static void main(String[] args) throws Exception { 10 try { 11 InetAddress addr = InetAddress.getLocalHost(); 12 System.out.println(addr.getHostName() + "\n" + addr.getHostAddress()); 13 14 } catch (UnknownException e) { 15 16 } 17 ServerSocket svSock = new ServerSocket(39648); 18 Socket sock = svSock.accept(); 19 System.out.println(sock.getInetAddress() + "connected"); 20 sock.getOutputStream().write("welcome".getBytes()); 21 sock.getOutputStream().flush(); 22 sock.close(); 23 svSock.close(); 24 } 25 26} 27
client側
java
1import java.io.BufferedInputStream; 2import java.io.IOException; 3import java.io.InputStream; 4import java.io.OutputStream; 5import java.net.Socket; 6 7public class Ntwk03 { 8 9 public static void main(String[] args) throws IOException { 10 Socket sock = new Socket(**HostName**, 39648);//HostNameにはサーバー側で出力されたaddr.getHostName()の結果を打ち込む 11 InputStream is = sock.getInputStream(); 12 OutputStream os = sock.getOutputStream(); 13 BufferedInputStream isr = new BufferedInputStream(is); 14 int i = isr.read(); 15 while (i != -1) { 16 System.out.print((char) i); 17 i = isr.read(); 18 } 19 sock.close(); 20 } 21 22} 23
試したこと
Socketクラスの引数に対し、IPアドレスを渡したり、getByNameやgetByAddressを使ってみましたが、タイムアウトしてしまいました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。