Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java: Сети
Войти
Регистрация
Восстановить пароль
 
moramar
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 42
1

Client-Server trouble

29.04.2016, 21:25. Просмотров 305. Ответов 3
Метки нет (Все метки)

Пытаюсь написать небольшой конвертер валют, застрял на проблеме общения клиент сервера. Знатоки, требуются ваши светлые головы

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class NetWork extends Thread {
    int serverPort = 6666;
    String address = "127.0.0.1";
    int coef;
    public int sendMessage(String line) {
        try {
            InetAddress ipAddress = InetAddress.getByName(address);
            System.out.println("Any of you heard of a socket with IP address " + address + " and port " + serverPort + "?");
            Socket socket = new Socket(ipAddress, serverPort); // создаем сокет используя IP-адрес и порт сервера.
            System.out.println("Yes! I just got hold of the program.");
 
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();
            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);            
            System.out.println();
            System.out.println("Sending this line to the server...");
            out.writeUTF(line); // отсылаем введенную строку текста серверу.
            out.flush(); // заставляем поток закончить передачу данных.
            coef = in.readInt(); // ждем пока сервер отошлет строку текста.
            System.out.println("The server sent me this : " + coef);
        } catch (Exception e) {e.printStackTrace();}
        return coef;
    }
}
Ругается собственно на 3 строку следующего кода:
Java
1
2
3
        NetWork net = new NetWork();
        int value = net.sendMessage("usd");
        editText2.setText(value);
Собственно в чем трабла, на сервер не приходит вроде как запрос, пробовал IP и с инета(46.185.85.227) и как локалхост... т.к. я пишу клиент под андроид и запускаю с эмулятора то не особо понимаю принцип работы сети в данный момент и кажется локалхост не вариант...

На всякий залеплю ещё серверную часть, хоть вроде и должно работать как часики(не тестил).
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public class Server {
    public static void main (String[] arg0){
        int port = 6666; 
          try {
            ServerSocket ss = new ServerSocket(port); // создаем сокет сервера и привязываем его к вышеуказанному порту
            System.out.println("Waiting for a client...");
            Socket socket = ss.accept(); // заставляем сервер ждать подключений и выводим сообщение когда кто-то связался с сервером
            System.out.println("Got a client :) ... Finally, someone saw me through all the cover!");
            System.out.println();
            // Берем входной и выходной потоки сокета, теперь можем получать и отсылать данные клиенту.
            InputStream sin = socket.getInputStream();
            OutputStream sout = socket.getOutputStream();
            // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения.
            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);
            String line = null;
            while(true) {
                line = in.readUTF(); // ожидаем пока клиент пришлет строку текста.
                System.out.println("The dumb client just sent me this line : " + line);
                System.out.println("I'm sending it back...");
                out.writeInt(calculation(line)); // отсылаем клиенту обратно ту самую строку текста.
                out.flush(); // заставляем поток закончить передачу данных.
                System.out.println("Waiting for the next line...");
                System.out.println();
            }
        } catch(Exception x) { x.printStackTrace(); }
    }
 
    private static Integer calculation(String line) {
        int usd = 1;
        int eur = (int) 0.89;
        int rub = (int) 66.49;
        int uah = (int) 25.64;
        String usdS = "usd";
        String rubS = "rub";
        String uahS = "uah";
        String eurS = "eur";
        if(line.equals(usdS))
            return usd;
        if (line.equals(rubS))
            return rub;
        if (line.equals(uahS))
            return uah;
        else
            return eur;
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2016, 21:25
Ответы с готовыми решениями:

Client-server на java
Решил написать простейший сервер.Вот код:(это клиент)! package educ.mark; ...

Socket, Client - Server
Создаю Клиент Серверное приложения, столкнулся с проблемой, если открыть...

netty client-server
Здравствуйте. я создал сервер. // NUMTHBOSS threads max, Memory...

Client - Server (with TCP/IP Socket)
Hi dear! Подскажите, пожалуйста, что поправить в моем коде, чтобы сервер не...

Client-server app Android - pc. Готовое решение, осталось долатать
Здравствуйте. Искал, думаю, как и все, "на просторах интернета", как сделать...

3
Welemir1
Автоматизируй это!
840 / 571 / 232
Регистрация: 30.03.2015
Сообщений: 2,200
29.04.2016, 21:30 2
1) бросай нафиг все эмуляторы, просто реализуй это все на Джаве, потом засунешь куда надо
2) для настоящей простоты, учитывая что отправляешь простой стринг, использую Сканнер для чтения и ПринтВрайтер для отправки строки
3) на локалхосте должно работать все
4) пропиши в серваке метод выхода из вечного цикла, например если приходит строка стоп
5) возьми книгу Хорстманна, там есть пример простенького клиент-сервера, по нему и проверь
0
moramar
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 42
29.04.2016, 22:13  [ТС] 3
Цитата Сообщение от Welemir1 Посмотреть сообщение
1) бросай нафиг все эмуляторы, просто реализуй это все на Джаве, потом засунешь куда надо
2) для настоящей простоты, учитывая что отправляешь простой стринг, использую Сканнер для чтения и ПринтВрайтер для отправки строки
1)Не понял насчет эмуляторов, мне же надо как-то проверять работает приложение или нет)
2) а при чем тут сканер? это же считывание с консоли если я ничего не путаю, а мне по итогу это надо будет как-то присобачить к обработчику события, чтоб при нажатии отправлялся запрос при котором я получал цифру необходимую мне, в зависимости от нажатой кнопки.
0
Welemir1
Автоматизируй это!
840 / 571 / 232
Регистрация: 30.03.2015
Сообщений: 2,200
30.04.2016, 14:09 4
1) проверять можно без эмулятора андроида, просто в консольке, например использовать виндосовский телнет. Я к тому что сначала сделай по простому, прикрутить свистелки и перделки потом можно.
2) путаешь, сканнер это обертка для считывания чего угодно с инпут стрима, он катит и для сокетного считывания.
еще раз рекомендую открыть Хорстманна
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2016, 14:09

String trouble
public static void main(String args) { // TODO code application logic...

Ftp client
Хай всем) Поделитесь знаниями пожалуйста :) Есть идея реализовать FTP...

Jabber client
может соберемся с и напишем свой jabber client на джаве?у кого есть свобное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru