Я хочу, чтобы ServerSocket принимал 2 сокета, подключающихся к одному порту. Тем не менее, он не будет распечатывать то, что читается из BufferedReader, и сокеты после подключения по-прежнему равны нулю.Как заставить сервер принимать несколько сокетов на одном и том же порту
Вот код ServerSocket:
ServerSocket serverSocket = new ServerSocket(PORT);
try {
Socket con;
int socketCounter= 0;
Socket first, second;
while (socketCounter!= 2) {
con = serverSocket.accept();
String input;
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
if ((input = in.readLine()) != null) {
System.out.println(input);
if (input.equals("first")) {
first = con;
} else if (input.equals("second")) {
second = con;
} else {
continue;
}
}
socketCounter++;
}
} catch (Exception e) {
e.printStackTrace();
}
Вот "первый"
try {
first = new Socket(URL, PORT);
ObjectOutputStream out = new ObjectOutputStream(first.getOutputStream());
ObjectInputStream in = new ObjectInputStream(first.getInputStream());
PrintWriter pw = new PrintWriter(new OutputStreamWriter(first.getOutputStream()));
pw.println("first");
pw.flush();
} catch(Excpetion e){
e.printStackTrace();
}
Во-вторых, в основном то же самое:
try {
second = new Socket(URL, PORT);
ObjectOutputStream out = new ObjectOutputStream(second.getOutputStream());
ObjectInputStream in = new ObjectInputStream(second.getInputStream());
PrintWriter pw = new PrintWriter(new OutputStreamWriter(second.getOutputStream()));
pw.println("second");
pw.flush();
} catch(Excpetion e){
e.printStackTrace();
}
Я бы предпочтительно хочу это сделать однопоточный, однако, если нет, все в порядке. Может ли кто-нибудь помочь?
Любая конкретная причина, по которой вы хотите использовать однопоточность? Это сделает вашу жизнь намного сложнее –
Нет причин. Однако, только чтобы сделать это немного легче, это может усложнить ситуацию. – user2874945