Search code examples
javaandroidsocketstcpserversocket

Android Socket programming


I am trying to connect android app(client) with java application(server 'PC') here is my client side code.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    btn = (Button) findViewById(R.id.button1);
    txt = (EditText) findViewById(R.id.editText1);

    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            new CallServer().execute();
        }
    });
}

public class CallServer extends AsyncTask<String, Integer, String> {

    @Override
    protected String doInBackground(String... arg0) {
        String modifiedSentence = "hello";
        Socket clientSocket;
        try {
            clientSocket = new Socket("192.168.1.100", 8081);


            DataOutputStream outToServer = new DataOutputStream(
                    clientSocket.getOutputStream());
            BufferedReader inFromServer = new BufferedReader(
                    new InputStreamReader(clientSocket.getInputStream()));

            outToServer.writeBytes("hello world");

            modifiedSentence = 
            (inFromServer.readLine());

            clientSocket.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return modifiedSentence;
    }

    protected void onPostExecute(String result) {
        txt.setText(result);
    }
}

Android permission

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET"/>

I cant find the problem with this code as it does not give any type of warring or error my server side code is perfectly working as I have tested it with other java application (client side). There isn't any kind of port issue as well because I have tested it by keeping client and server side code on different machines and it worked fine.


Solution

  • The issue was with my server side code. I didn't closed the BufferedReader so now it works fine.