Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Android клиент-серверное приложение. Не могу получить данные с сервера - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android ActionBar убивает приложение http://www.cyberforum.ru/android-dev/thread1068703.html
import android.app.ActionBar; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.text.Html; import android.view.View; import...
Программирование Android Аналог Делфийского property в Java Есть ли подобное? Пытаюсь написать класс и защитить его от случайного внешнего хулигантва. Защищаю некоторые свойста на только-чтение (read_only). В делфи было так: private f_opened:... http://www.cyberforum.ru/android-dev/thread1068111.html
Программирование Android Шаринг фейсбук (facebook-android-sdk-3.6.)
Добрый день. Кто уже работал с facebook-android-sdk-3.6. Прошу подкиньте, какой нибудь рабочий, понятный туториал (кроме официального!, что то с ним у меня не срастается). Буду не против хорошего...
Использование Google Maps API V2 Программирование Android
Добрый день. Сейчас делаю один проект под Android, а так как в этом я почти полный новичок возник вопрос. Есть приложение которое использует Google Maps API V2, можно ли каким либо образом сделать...
Программирование Android Запретить листание за пределы списка http://www.cyberforum.ru/android-dev/thread1067661.html
Можо ли? Хочу как в Win! Что-бы было нельзя схватить список и тянуть пока тянется, показывая фон под списком (фишка всех списков андроида). Убрать "пружинку" возврата списка. Недавно СЛУЧАЙНО...
Программирование Android Вместо открытия страницы в WebView предлагает открытие в браузере Добрый день. У меня есть Webview-открываю страничку в страничке есть форма которая передает значения обработчику, при клике на кнопку должна открыться страничка2 тамже (в Webview) но почему то... подробнее

Показать сообщение отдельно
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
12.01.2014, 12:29
Цитата Сообщение от Sergo_Dubovick Посмотреть сообщение
Подскажите, пожалуйста в чём тут проблема.
Когда вы закрываете поток ввода или вывода который получен от сокета, то вместе с ним закрывается сам сокет, отсюда и возникает ваша проблема. На клиенте вы производите закрытие потока вывода out чтоб дать понять серверу что передача данных от клиента завершилась, так в данном случае делать не надо. Пусть признаком окончания передачи данных от клиента будет например строка "END_OF_DATA". Тогда все заработает.

На скорую руку поравил код сервера и клиента:
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
import java.io.*;
import java.net.*;
 
public class Server {
 
  public static void main(String[] args) throws IOException {
    try
    {
        ServerSocket sSock = new ServerSocket(1234);
        Socket sock = sSock.accept();
        System.out.println("Client connected");
        DataInputStream is = new DataInputStream(sock.getInputStream());
        DataOutputStream out = new DataOutputStream(sock.getOutputStream());
        System.out.println("Waiting for data");
        String str, buff="";
        while(!(str = is.readUTF()).equals("END_OF_DATA"))
                {
                    System.out.println("Getting data");
                    buff = buff + str;
                }
        buff = buff + " out";
        System.out.println(buff);
        out.writeUTF(buff);
        out.writeUTF("END_OF_DATA");
        out.flush();
        out.close();
        is.close();
        sock.close();
        sSock.close();
    }
    catch (UnknownHostException e) {
        System.out.println("Host not found: " + e.getMessage());
    }
    catch (IOException ioe) {
        System.out.println("I/O Error " + ioe.getMessage());
    }
    
  }
}
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
    public void SendMsg()
    {
        Thread send = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Socket sock = new Socket("192.168.0.101", 1234);
                    DataOutputStream out = new DataOutputStream(sock.getOutputStream());
                    DataInputStream in = new DataInputStream(sock.getInputStream());
                    out.writeUTF("string");
                    out.writeUTF("END_OF_DATA"); 
                    out.flush();
                    String res;
                    while(!(res = in.readUTF()).equals("END_OF_DATA"))
                    {
                        str1  = str1 + res;
                    }
                    out.close();
                    in.close();
                    sock.close();
                    System.out.println(str1);
                } catch (UnknownHostException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        });
 
        send.start();
    }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru