适用于Android的简单TCP侦听器线程。我的无法连接



在Android上,我尝试实现一个简单的TCP监听线程(或从任何地方复制它)。它应该只是等待一个文本,然后做一些事情。文本被发送,这部分工作,但是这个listener-Thread甚至没有创建正确侦听的套接字。

有谁的想法,什么是错的或另一个简单的方法为我?文本是我自己定义的,而不是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 startedn");
      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);
}
}

您展示的代码用于创建客户端套接字,而不是服务器套接字。下面是一个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);
         }
      }
}

最新更新