Я настраиваю простое взаимодействие клиента TCP с сервером в java.
Сервер:
Сервер является клиентом для настольного компьютера, написанным на Java:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
class TCPServer
{
public static int PORT_NUMBER = 6129;
public static void main(String argv[]) throws Exception
{
String clientMessage;
ServerSocket welcomeSocket = new ServerSocket(PORT_NUMBER);
while (true)
{
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientMessage = inFromClient.readLine();
System.out.println("Received: " + clientMessage);
outToClient.writeBytes("I received this: "+ clientMessage +"\n");
}
}
}
Клиент:
Клиент - это приложение для Android, которое подключается к серверу по протоколу TCP.В клиенте у меня есть метод sendMessage(String msg)
, который пытается отправить сообщение на сервер.
public static void sendMessage(String msg) throws IOException
{
if (mainSocket == null)
{
return;
}
if (!mainSocket.isConnected())
{
connectSocket();
}
PrintWriter output = new PrintWriter( mainSocket.getOutputStream());
output.println(msg);
output.flush();
System.out.println(msg);
}
Проблема в том, что сервер получает первое сообщение, но любые последующие сообщения не отображаются привсе.Когда я закрываю клиент, все остальные сообщения внезапно появляются сразу на сервере.
Вот что видит сервер:
Received: message 1
Нет активности долгое времяtime ...
Затем я закрываю клиент
Received: message 2 message 3 message 4 message 5 etc..
Я помещаю println в метод sendMessage (), и сам метод вызывается в режиме реального времени.