Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绑定Android服务中的套接字_Android_Sockets_Service - Fatal编程技术网

绑定Android服务中的套接字

绑定Android服务中的套接字,android,sockets,service,Android,Sockets,Service,我有一个必须等待服务器命令的服务。现在我需要创建一个从开始到服务生命周期结束的套接字。我想在onCreate方法中使用它,并将套接字保存在私有变量中,然后在BindService中使用它,但它不起作用。我的错误在哪里?错误在哪里?谢谢大家 package com.example.testercomunicationandroidservlet; import java.io.DataInputStream; import java.io.DataOutputStream; import jav

我有一个必须等待服务器命令的服务。现在我需要创建一个从开始到服务生命周期结束的套接字。我想在onCreate方法中使用它,并将套接字保存在私有变量中,然后在BindService中使用它,但它不起作用。我的错误在哪里?错误在哪里?谢谢大家

package com.example.testercomunicationandroidservlet;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.provider.ContactsContract.Contacts.Data;
import android.telephony.TelephonyManager;
import android.util.Log;

public class BindService extends Service {

    public BindService() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public IBinder onBind(Intent arg0) 
        {
            // TODO Auto-generated method stub
            return null;
        }

    public void onCreate()
        {
            try {
                    Log.i("BindService", "Service Started");
                    this.socket = new Socket("10.0.2.2", 1500);
                    this.input = new DataInputStream(this.socket.getInputStream());
                    this.output = new DataOutputStream(this.socket.getOutputStream());
                    Log.i("Test Server/Android Communication", "Socket: " + this.socket.getInetAddress().toString());
                    TelephonyManager  tm= (TelephonyManager) getSystemService(this.TELEPHONY_SERVICE);

                    this.output.writeUTF(tm.getDeviceId());

                    Log.i("Inviato IMEI: ", tm.getDeviceId());
                }
            catch (UnknownHostException e)
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } 
            catch (IOException e) 
                {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
        }

    private Socket socket;
    private DataInputStream input;
    private DataOutputStream output;
}
LogCat

11-18 15:21:22.633: E/TCP(295): C: Error
11-18 15:21:22.633: E/TCP(295): java.net.SocketException: The operation timed out
11-18 15:21:22.633: E/TCP(295):     at org.apache.harmony.luni.platform.OSNetworkSystem.connectStreamWithTimeoutSocketImpl(Native Method)
11-18 15:21:22.633: E/TCP(295):     at org.apache.harmony.luni.platform.OSNetworkSystem.connect(OSNetworkSystem.java:115)
11-18 15:21:22.633: E/TCP(295):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:244)
11-18 15:21:22.633: E/TCP(295):     at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:219)
11-18 15:21:22.633: E/TCP(295):     at java.net.Socket.startupSocket(Socket.java:781)
11-18 15:21:22.633: E/TCP(295):     at java.net.Socket.<init>(Socket.java:316)
11-18 15:21:22.633: E/TCP(295):     at com.example.betacomunicate_clientandroid.TCPClient.run(TCPClient.java:53)
11-18 15:21:22.633: E/TCP(295):     at com.example.betacomunicate_clientandroid.MyActivity$connectTask.doInBackground(MyActivity.java:89)
11-18 15:21:22.633: E/TCP(295):     at com.example.betacomunicate_clientandroid.MyActivity$connectTask.doInBackground(MyActivity.java:1)
11-18 15:21:22.633: E/TCP(295):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
11-18 15:21:22.633: E/TCP(295):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
11-18 15:21:22.633: E/TCP(295):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
11-18 15:21:22.633: E/TCP(295):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
11-18 15:21:22.633: E/TCP(295):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
11-18 15:21:22.633: E/TCP(295):     at java.lang.Thread.run(Thread.java:1096)
你确定:

android和服务器都在同一个网络上?它们位于同一个lan上,具有不隔离DHCP客户端的根用户 安卓已接入互联网adb shell ping kde.org 安卓真的可以到达服务器吗?亚洲开发银行壳牌telnet 10.02.2.2 1500 10.0.2.2:1500上有服务器吗?从您的计算机上使用浏览器或telnet 10.02.2.2 1500查看 到目前为止唯一的错误是android无法连接到您的服务器

最后,但这更多的是一种设计选择,你确定要使用这样一个定制的协议吗?什么都不像HTTP/REST/JSON/PROTOBUF