0

IPアドレスを使用して1つのサーバーと1つのクライアントの通信を実行しましたが、1つのサーバーの複数の通信でスタックしています

s=new ServerSocket(77);
ss=s.accept();
icon.displayMessage("New message for you", "Please click here", TrayIcon.MessageType.WARNING);     
os=ss.getOutputStream();
ps=new PrintStream(os);
is=ss.getInputStream();
br=new BufferedReader(new InputStreamReader(is));
ps.println(st);
}
catch(Exception e)
{}

クライアント側

 try
 {
 ss=new Socket(ip,77);

}
 catch(Exception e){
 }
 is=ss.getInputStream();
 br=new BufferedReader(new InputStreamReader(is));
 os=ss.getOutputStream();
 ps=new PrintStream(os);
 ps.println(msg+"  :   "+st1);
4

2 に答える 2

2

次のようなことができます:

while (true){
    s=new ServerSocket(77);
    ss=s.accept();
    Thread at = new Thread(ss);
    at.start();
}

次に、「at」の実行メソッドでクライアントへの通信が行われます。

于 2012-11-22T14:04:10.233 に答える
2

次のように、各セッションを個別のスレッドで実行する必要があります。

static class Session extends Thread {
    Socket s;
    Session(Socket s) {
        this.s = s;
    }
    @Override
    public void run() {
        try {
            OutputStream os = s.getOutputStream();
            // your code  
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

public static void main(String[] args) throws Exception {
    ServerSocket s = new ServerSocket(77);
    for (;;) {
        Socket ss = s.accept();
        new Session(ss).start();
    }
}

このコードは、アイデアを説明するためのものです。

于 2012-11-22T14:07:21.923 に答える