У меня есть класс, реализующий класс serverocket, и есть другой класс, реализующий клиент 1. Класс Socket.Сокет не может получить данные
Так что я пытаюсь это сделать. После получения потоков я хочу, чтобы клиент отправил число на сервер, и сервер, в свою очередь, будет отвечать клиенту, является ли он простым или нет. Что отображается в awt.Label
.
Но я не могу получить ответ.
Вот код для конструктора клиента:
public ClientIsPrime()
{
setLayout(new GridLayout(2,2));
add(new Label("Enter a number: "));
add(numEntry=new TextField(10));
add(checkPrime=new Button("Check if number is Prime"));
add(result=new Label("Result is shown here"));
try
{
Socket client = new Socket(InetAddress.getLocalHost(), 5959);
in=client.getInputStream();
out=client.getOutputStream();
}catch(UnknownHostException e)
{
result.setText("Local Host cannot be resolved");
}catch(IOException e)
{
result.setText("IOException occured");
}
checkPrime.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
try
{
int num;
num=Integer.parseInt(numEntry.getText());
out.write(num);
out.flush();
int c;
result.setText("");
String s="";
while((c=in.read())!=-1)
s+=((char)c);
result.setText(s);
}catch(IOException e)
{
result.setText("IOException occured");
}catch(NumberFormatException e)
{
result.setText("Please enter a valid number.");
}
}
});
}
Код для сервера:
public static void main(String args[])throws IOException
{
server=new ServerSocket(5959);
socket=server.accept();
System.out.println("connected");
InputStream in=socket.getInputStream();
OutputStream out=socket.getOutputStream();
int c; String numStr="";
while((c=in.read())!=-1)
numStr+=((char)c);
int num=Integer.parseInt(numStr);
if(num==3)
out.write("Number is Prime".getBytes());
else
out.write("Number is not Prime".getBytes());
out.flush();
in.close();
out.close();
}
Это не реальное приложение. Я учусь.
Реализация простого числа неправа .. но не нуждается в каких-либо вещах. Просто нужно проверить, передаются ли сообщения или нет .. то, что сделано .. я бы очень хорошо написал реализацию простого числа. – ritesht93
Из того, что я знаю о сокетах Java, вы делаете это правильно. Переправляются ли ваши порты и ваш брандмауэр? – Axis
Итак, чтобы уточнить: является ли проблема, что сервер получает простое число, но что клиент никогда не получает ответ? – chradcliffe