У меня очень простое назначение, в котором я должен отправить 2 целых числа в сокет, который отправляет их сумму обратно «клиенту».Java beginner (Client-Server): отправка нескольких целых чисел в сокет
это мой клиент:
int a,b,sum;
try
{
Socket Server_info = new Socket ("localhost", 15000);
BufferedReader FromServer = new BufferedReader (new InputStreamReader(Server_info.getInputStream()));
DataOutputStream ToServer = new DataOutputStream(Server_info.getOutputStream());
while (true)
{
System.out.println("Type in '0' at any point to quit");
System.out.println("Please input a number");
a = User_in.nextInt();
ToServer.writeInt(a);
System.out.println("Please input a second number");
b = User_in.nextInt();
ToServer.writeInt(b);
sum = FromServer.read();
System.out.println("the sum of " +a+ " and " +b+ " is: " +sum);
if (a==0 || b==0)
break;
}
это мой сокет обработчик:
int num1=0 ,num2=0, sum;
try
{
BufferedReader InFromClient = new BufferedReader (new InputStreamReader(soc_1.getInputStream()));
DataOutputStream OutToClient = new DataOutputStream(soc_1.getOutputStream());
while (true)
{
num1 = InFromClient.read();
num2 = InFromClient.read();
sum = num1 + num2 ;
OutToClient.writeInt(sum);
}
}
catch (Exception E){}
После первого ввода Integer при запуске клиента я получаю это:
Тип в '0' в любой момент для прекращения
Pl легкость ввода номера
сброса Подключение пэром: гнездо Ошибка записи
я думаю, что проблема лежит в гнезде приемной стороне, я должен делать что-то не так. какие-либо предложения?
Может быть, это я, но я считаю, что трудно догадаться, что может быть не так, кроме я не вижу никакой необходимости нарезания резьбы происходит, и у вас есть один ужасающая строка кода здесь: 'catch (Exception E) {}', чего вы никогда не должны делать. –
Кроме того, не следует ли использовать DataInputStream с входным потоком вашего сервера? Вы отправляете числовые данные, а не текст, и поэтому вы не должны использовать для этого читателей. –
Эй! да, 'catch (Exception E) {}' довольно ужасен. я фактически бросил его там неполным для «более позднего» использования, чтобы сосредоточиться на моей проблеме, уже переключил его на «IOException». и да, «DataInputStream» в конечном итоге решил это для меня. благодаря! –