使用Broadcastreceiver进行套接字编程

时间:2014-12-22 10:01:10

标签: android sockets broadcastreceiver

我正在开发Android应用程序(在线营销),在这个项目中,我使用套接字编程与服务器通信,当我与服务器通信,如果服务器在30秒内没有给我任何响应,那么我的 asynctask 将自动关闭,但现在问题是我想在 sqlite 中保存服务器响应从服务器接收响应请提供我必要的帮助谢谢 你提前。

这是我的Asyntask:

public class SendToserver extends AsyncTask<Integer, Integer, Integer>
{
    int iReturn;

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        progressDialog(Registartion.this, "Please Wait...");
        super.onPreExecute();
    }

    @Override
    protected Integer doInBackground(Integer... params) {
        // TODO Auto-generated method stub

        ServerData = runm(IMEINo);
        if (ServerData.equalsIgnoreCase("IsNull"))
        {
            iReturn = 2;
        }
        else {
            iReturn = 1;
        }

        return iReturn;
    }

    @Override
    protected void onPostExecute(Integer result) {
        // TODO Auto-generated method stub
        if (iReturn == 1) 
        {
            String ServerIP = edtServerIpAddress.getText().toString();
            String ServerPort = edtServerPort.getText().toString();

            registartionModel = new RegistartionModel();
            registartionModel.setServerIPAdreess(ServerIP);
            registartionModel.setPort(ServerPort);

            registrationDb = new RegistrationDb(getApplicationContext());
            registrationDb.open();
            registrationDb.insertData(registartionModel);
            registrationDb.close();

            Intent i = new Intent(getBaseContext(), LoginActivity.class);
            startActivity(i);
            Registartion.this.finish();
            System.gc();

        }
        else if (iReturn == 2) 
        {
            showDialogBox("Please Input Correct Server IP and Port");
        }

        super.onPostExecute(result);
    }

}

我的服务器通信方法(runm):

@SuppressLint("NewApi")
public String runm(String DId) 
{
    try {
            socket = new Socket(SERVER_IP, SERVERPORT);
            out = new PrintStream(socket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out.write((DId + "|" +"REG").getBytes());
            ServerData = in.readLine();
            System.err.println("Server Data in Runm :- " + ServerData);

            if(ServerData == null || ServerData.equalsIgnoreCase(""))
            {
                ServerData="IsNull";
            }

    } 
    catch (NetworkOnMainThreadException e)
    {
        ServerData = "IsNull";
    }catch (IOException ex) {
        ServerData = "IsNull";
    }
    return ServerData;
}

我应该使用广播接收器吗?

0 个答案:

没有答案