私はいくつかの問題を抱えています、Javaでクライアント/サーバーシステムを作ろうとしています、次のコードはクライアントに属しています...
public class ClientTCP {
final static int PORT = 65001;
Socket _socket;
private void fireUp(){
String message = "";
BufferedReader bfi = null;
BufferedReader bfr = null;
PrintWriter writer = null;
try{
InetAddress address = InetAddress.getByName("localhost");
_socket = new Socket(address,PUERTO);
bfr = new BufferedReader(
new InputStreamReader(System.in));
bfi = new BufferedReader(
new InputStreamReader(_socket.getInputStream()));
System.out.println("Enter some data");
String inputstr = bfr.readLine();
writer = new PrintWriter(_socket.getOutputStream(),true);
writer.println(inputstr);
if((message = bfi.readLine()) != null){
Logger.getLogger(ClientTCP.class.getName()).log(Level.INFO,message);
}
}catch(IOException ioex){
ioex.printStackTrace();
}finally{
if(_socket != null){
try {
_socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
...そしてこれはサーバーに属し、スレッドは1つのクライアントごとに作成されます。
public class ServerrTCP {
static int SEC = 0;
final static int PORT = 65001;
Socket _socket;
ServerSocket _ssocket;
private void fireUp(){
try{
_socket = new Socket();
_ssocket = new ServerSocket(PORT);
while(true){
_socket = _ssocket.accept();
new ClientThreads(_socket,SEC++);
}
}catch(IOException ioex){
Logger.getLogger(ServerTCP.class.getName()).log(Level.SEVERE,null,ioex);
}
スレッド作成クラス...
public class ClientThreads extends Thread{
int _id;
Socket _socket;
public ClientThreads(Socket socket, int id){
super();
_socket = socket;
_id = id;
this.start();
}
@Override
public void run(){
String strinput;
BufferedReader bfr = null;
PrintWriter writer = null;
try{
bfr = new BufferedReader(
new InputStreamReader(_socket.getInputStream()));
writer = new PrintWriter(
_socket.getOutputStream(),true);
while((strinput = bfr.readLine()) != null){
System.out.println("The user "+ _id +" wrote "+ strinput);
}
writer.println("Thanks, user " + _id);
}catch(IOException ioex){
ioex.printStackTrace();
}
}
}
コードの量は申し訳ありませんが、この問題のために私は気が狂います、そして私が間違っているのは太字のものだと思います、それはI /Oをブロックする際に何らかの問題を引き起こしていると思います、でも、その理由と解決方法がわかりません。よろしくお願いします。