Android应用程序通过套接字与服务器通信

时间:2011-11-29 20:11:36

标签: java android sockets

我正在制作一个与服务器通信的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应用程序调用Client类时,我没有得到任何连接。 有谁知道如何解决这个问题?

当在电话上收到消息时,从onReceive(上下文上下文,Intent intent){方法调用类'Client'。

2 个答案:

答案 0 :(得分: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或网络上的服务器地址。

答案 1 :(得分:1)

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

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