Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid client and Java server TCP communication
    primarykey
    data
    text
    <p>I'm developing an Android application (client) and want it to connect with my Java server using TCP communication. </p> <p>I've done the code - simple program, client send a message and server echos it back - as below:</p> <p>Server code:</p> <pre><code> import java.net.*; public class Server { public static void main(String[] args) { int nreq = 1; try { ServerSocket sock = new ServerSocket (8080); for (;;) { Socket newsock = sock.accept(); System.out.println("Creating thread ..."); Thread t = new ThreadHandler(newsock,nreq); t.start(); } } catch (Exception e) { System.out.println("IO error " + e); } System.out.println("End!"); } } </code></pre> <p>a Thread Handler code in the same project file of the server:</p> <pre><code> import java.io.*; import java.net.*; class ThreadHandler extends Thread { Socket newsock; int n; ThreadHandler(Socket s, int v) { newsock = s; n = v; } public void run() { try { PrintWriter outp = new PrintWriter(newsock.getOutputStream(), true); BufferedReader inp = new BufferedReader(new InputStreamReader( newsock.getInputStream())); outp.println("Hello :: enter QUIT to exit \n"); boolean more_data = true; String line; while (more_data) { line = inp.readLine(); System.out.println("Message '" + line + "' echoed back to client."); if (line == null) { System.out.println("line = null"); more_data = false; } else { outp.println("From server: " + line + ". \n"); if (line.trim().equals("QUIT")) more_data = false; } } newsock.close(); System.out.println("Disconnected from client number: " + n); } catch (Exception e) { System.out.println("IO error " + e); } } } </code></pre> <p>And this is the Client side (Android):</p> <pre><code>package com.android.client; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class Client extends Activity { /** Called when the activity is first created. */ Scanner scanner = new Scanner(System.in); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final EditText msg = (EditText) findViewById(R.id.etMsg); Button send = (Button) findViewById(R.id.bSend); final TextView convo = (TextView) findViewById(R.id.tvConvo); final TextView status = (TextView) findViewById(R.id.tvStatus); try { send.setOnClickListener(new View.OnClickListener() { Socket s = new Socket("localhost", 8080); String message = msg.getText().toString(); @Override public void onClick(View v) { status.setText("..."); PrintWriter outp = null; BufferedReader inp = null; status.setText("Established connection.."); String serverMsg = null; try { outp = new PrintWriter(s.getOutputStream(), true); inp = new BufferedReader(new InputStreamReader(s.getInputStream())); serverMsg = inp.readLine(); } catch (IOException e) { e.printStackTrace(); } convo.append(serverMsg + "\n"); if (message != null) { if (msg.getText().toString().trim() == "QUIT") { try { s.close(); } catch (IOException e) { e.printStackTrace(); } status.setText("Disconnected from server."); } else { try { convo.append(message + "\n"); outp.println(message); serverMsg = inp.readLine(); convo.append(serverMsg + "\n"); } catch (IOException e) { e.printStackTrace(); } } } else status.setText("Problem in connection..!"); } }); } catch (IOException e) { e.printStackTrace(); } } } </code></pre> <p>And this is the XML file:</p> <pre><code>&lt;?xml version="1.0" encoding="utf-8" ?&gt; - &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"&gt; &lt;TextView android:id="@+id/tvText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Your message here:" /&gt; - &lt;EditText android:id="@+id/etMsg" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10"&gt; &lt;requestFocus /&gt; &lt;/EditText&gt; &lt;TextView android:id="@+id/tvStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Status..." android:textAppearance="?android:attr/textAppearanceSmall" /&gt; &lt;Button android:id="@+id/bSend" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Send" /&gt; &lt;TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Conversation:" android:textAppearance="?android:attr/textAppearanceLarge" /&gt; &lt;TextView android:id="@+id/tvConvo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="" /&gt; &lt;/LinearLayout&gt; </code></pre> <p>I tried running it, but nothing happens. When I click the button the TextView doesn't view the "Hello" message from the server.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload