Я искал в stackoverflow ответ на свой вопрос, но не могу получить ответ в этих темах. Мой вопрос заключается в том, почему метод accept()
объекта ServerSocket возвращает объект Socket, прослушивающий другой порт на сервере, а порт, который прослушивает сервер, является другим.
JAVA Код:
package chat.server;
import java.io.*;
import java.net.*;
public class ServerApp {
public String[] advices = {"Take smaller bites",
"Go for the tight jeans. No they do NOT make you look fat.",
"One word: inappropriate",
"Just for today, be honest. Tell your boss what you *really* think",
"You might want to rethink that haircut."};
public ServerSocket serverSocket;
public ServerApp()
{
try
{
serverSocket = new ServerSocket(4245);
System.out.println("Server Started.");
}catch (Exception exception)
{
exception.printStackTrace();
}
}
public static void main(String[] args) {
ServerApp server = new ServerApp();
while(true)
{
server.sendMessage();
}
}
public void sendMessage()
{
String advice;
try
{
Socket socket = serverSocket.accept();//here comes my question
System.out.println(socket.getPort());
PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
advice = getAdvice();
printWriter.write(advice);
printWriter.close();
System.out.println(advice);
}catch (Exception exception)
{
exception.printStackTrace();
}
}
private String getAdvice() {
int random = (int) (Math.random() * advices.length);
return advices[random];
}
}
Разве это не нормально, что сервер слушает и отвечает клиенту с одного и того же номера порта?