2011-11-29 145 views
0

我正在制作一个与服务器通信的Android应用程序。当Android手机收到短信时,我希望它通过套接字发送给我的服务器。Android应用程序通过插座与服务器通信

公共类服务器{

public static final int PORT = 8080; 
public static void main(String[] args) throws IOException { 
    ServerSocket s = new ServerSocket(PORT); 
    try { 
     Socket socket = s.accept(); 
     try { 
      BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
      String str = in.readLine(); 
      System.out.println(str); 
     } 
     finally { 
      socket.close(); 
     } 
    } 
    finally { 
     s.close(); 
    } 
} 

}

这是我的客户:

public Client(String message){ 

    try { 
     Socket socket = new Socket("127.0.0.1", 8080); 
     PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true); 
     out.println(message); 
     socket.close(); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 

林没有得到时,即时通讯呼叫从Android应用客户端类的任何连接。 任何人都知道如何解决这个问题?

从onReceive(Context context,Intent intent){方法在手机上收到消息时调用类'Client'。

+0

什么是你的错误?请发布堆栈跟踪。另外,你是在模拟器还是真实设备上测试它? – MByD

+0

没有堆栈跟踪,因为服务器正在等待响应。我运行一个模拟器并等待Java应用程序中运行的程序的响应。 – rtc11

+0

你可以使用简单的telnet测试你的服务器套接字吗? –

回答

1

我解决了它,忘记它添加到我的androidmanifest.xlm

< uses-permission android:name="android.permission.INTERNET">< /uses-permission> 
2

您的Android客户端正试图创建一个连接到IP 127.0.0.1的套接字,这是一个环回地址。你基本上是试图连接到自己

变化

Socket socket = new Socket("127.0.0.1", 8080); 

Socket socket = new Socket("your server's IP", 8080); 

请不要随便将其更改为“服务器的IP” :)使其192.168.1.104或任何服务器地址在网络上。

+0

现在我在使用IPV4地址。当我用telnet测试它时,我得到一个响应,所以我知道有一个连接。但它仍然不会干扰android应用程序。 – rtc11

+0

您使用的是网络本地的外部IP地址还是IP地址? – dymmeh

+0

这是一个本地地址,我在我的笔记本电脑上运行服务器应用程序和Android模拟器。 – rtc11

相关问题