Simple TCP Listener-Thread для Android .. мой не подключается - PullRequest
1 голос
/ 28 ноября 2011

На Android я пытался реализовать простой поток прослушивателя TCP (или скопировал его из любого места). Нужно просто подождать текст, а затем что-то сделать. Текст отправлен, эта часть работает, но этот поток слушателя даже не создает сокет для правильного прослушивания.

Есть ли у кого-нибудь идея, что не так или другой простой подход для меня? Текст определяется б сам, а не HTML. Я нашел только слишком сложные http-обработчики.

import java.lang.*;
import java.io.*;
import java.net.*;

public class Client implements Runnable {



   public static void main(String args[]) {

       System.out.print("Listening Thread started\n");

      try {
         Socket skt = new Socket("localhost", 2999);
         BufferedReader in = new BufferedReader(new
            InputStreamReader(skt.getInputStream()));
         System.out.print("Received string: '");

         while (!in.ready()) {}
         System.out.println(in.readLine()); // Read one line and output it

         System.out.print("'\n");


         in.close();
      }
      catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
         System.err.println(e);
      }
   }
   public Client () {

   }
@Override
public void run() {
    // TODO Auto-generated method stub
    main(null);
}

}

1 Ответ

3 голосов
/ 28 ноября 2011

Код, который вы показали, используется для создания сокета клиента, а не сокета сервера. см. ниже пример сокета TCP-сервера, взятый из SystemBash :

class TCPServer
{
   public static void main(String argv[]) throws Exception
      {
         String clientSentence;
         String capitalizedSentence;
         ServerSocket welcomeSocket = new ServerSocket(6789);

         while(true)
         {
            Socket connectionSocket = welcomeSocket.accept();
            BufferedReader inFromClient =
               new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
            DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
            clientSentence = inFromClient.readLine();
            System.out.println("Received: " + clientSentence);
            capitalizedSentence = clientSentence.toUpperCase() + '\n';
            outToClient.writeBytes(capitalizedSentence);
         }
      }
}
...