アプリ版:「スタンプのみでお礼する」機能のリリースについて

初歩的なソケット通信(java)

javaのソケット通信プログラムについて質問させて頂きます。まだまだ基礎の段階なのですが、詰まってしまたので、良かったら教えてください。

以下プログラムコード
-------------------------------------
//サーバー側
import java.net.*;
import java.io.*;

public class Server {

static int port = 12345;

public static void main(String[] args) {
try{
//サーバソケットの作成
ServerSocket ssoc = new ServerSocket(port);

//メインループ
while(true){
try{
System.out.println("クライアントからの接続を"+ port +"で待ちます");
Socket soc = ssoc.accept();
System.out.println(soc.getInetAddress().getHostName()+"から接続を受けました");

//処理をスレッドに任せます
new Connect(soc);
}catch(IOException e1){
e1.printStackTrace();
}
}
}catch(IOException e2){
e2.printStackTrace();
}

}

}
class Connect extends Thread{
private Socket socket = null;

public Connect(Socket socket){
this.socket = socket;
//スレッド開始
this.start();
}

public void run(){
try{
//出力ストリームを取得
OutputStream os = socket.getOutputStream();
PrintWriter out = new PrintWriter(os,true);
//入力ストリームを取得
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader in = new BufferedReader(isr);

String inputLine;

while((inputLine = in.readLine()) != null){
//System.out.println(inputLine);
out.println(inputLine);
}

System.out.println("処理が終わったので接続を切ります");

in.close();
out.close();
socket.close();

}catch(Exception e1){
try{
socket.close();
}catch(Exception e2){
e2.printStackTrace();
}
}
}
}

A 回答 (1件)

こんにちは。



>まだまだ基礎の段階なのですが、詰まってしまたので、良かったら教えてください。

どこがどのように詰まってしまったのでしょうか。
質問するのであれば最低限の仕様と現在どのようになってしまってわからないのかを記述しないと的確な回答は難しいですよ。

気になったところと言えば
// 処理をスレッドに任せます
new Connect(soc);
という処理がありますがスレッド処理するのであれば
Thread thread = new Thread(new Connect(soc));
thread.start();

では無いでしょうか。
(実際に動かしたわけでは無いので適切な処理かはわかりません)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!