Java で小さなクライアント サーバー プログラムを作成しました。サーバーはServerSocket
いくつかのポートで を作成し、それをリッスンし続けます。Client
サンプル情報をこのサーバーに送信します。初めて実行するとClient
、接続がサーバーによって受け入れられ、情報がサーバーによって出力されます。その後、Client
プログラムは終了します。再度実行Client
すると、接続は受け入れられますが、データは印刷されません。次のコードを確認してください。
サーバープログラム
package javadaemon;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class MyDaemon {
public static void main(String [] args) throws IOException {
ServerSocket ss = new ServerSocket(9879);
ss.setSoTimeout(0);
while(true) {
Socket s = ss.accept();
System.out.println("socket is connected? "+s.isConnected());
DataInputStream dis = new DataInputStream(s.getInputStream());
System.out.println("Input stream has "+dis.available()+" bytes available");
while(dis.available() > 0) {
System.out.println(dis.readByte());
}
}
}
}
クライアントプログラム
package javadaemon;
import java.io.*;
import java.net.Socket;
public class Client {
public static void main(String [] args) {
try {
System.out.println("Connecting to " + "127.0.0.1"
+ " on port " + 9879);
Socket client = new Socket("127.0.0.1", 9879);
System.out.println("Just connected to "
+ client.getRemoteSocketAddress());
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
for(int i=0; i<100; i++ ) {
out.writeUTF("Syn "+i);
}
} catch(IOException e) {
}
}
}
次回サーバーがデータを受信しない理由を見つけるのを手伝ってください。