Пишу серверное приложение. У меня сервер написан на java а клиент android приложение. Код примитивного сервера и клиента. Когда я подключаюсь через андроид на сервер он видит клиента и, но не принимает от него сообщений и никак соответственно их не обрабатывает. Когда я писал и клиент на джаве таких проблем не было а вот с андроид такое. Спасибо
Server
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] ar) {
int port = 7777;
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.writeUTF(line); // отсылаем клиенту обратно ту самую строку
//текста.
out.flush(); // заставляем поток закончить передачу данных.
System.out.println("Waiting for the next line...");
System.out.println();
}
} catch(Exception x) { x.printStackTrace(); }
}
}
Client
package com.example.clientandroid;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
import android.view.View;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
private Socket socket;
private static final int SERVERPORT = 7777;
private static final String SERVER_IP = "77.47.224.135";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new Thread(new ClientThread()).start();
}
class ClientThread implements Runnable {
@Override
public void run() {
try {
Socket socket = new Socket(SERVER_IP, SERVERPORT);
socket.setSoTimeout(10000);
PrintWriter toServer = new PrintWriter(socket.getOutputStream(), true);
// Отправка данных на сервер
toServer.println("Hello from TEST");
// Ответ сервера
BufferedReader fromServer;
fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = fromServer.readLine();
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
А сервер ошибку в консоль не выводит?
Подозрительно что сервер пишет/читает readUTF/writeUTF
, а клиент readLine/println
.
readUTF
не сможет адекватно прочитать текст, если он записан не так же, как пишет writeUTF
.
Это запись определённого формата, в первые два байта записывается количество символов этого куска текста, дальше сам текст.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Подскажите как такое можно сделать с помощью стримов? Я в них новичок, может хотябы с помощью каких метов можно сделатьБуду рад любой помощи!
Пытаюсь получить список файлов и папок GoogleDriveВ документации написано для того, чтобы получить список нужно выполнить такой запрос: