Android Datagram/UDP Client example - Apk Apps For you

Apk Apps For you

Foxi apk download latest version for Android,fifa 20 download for Android,fifa 20 download,mobile games,games download,Android games free download apk

Click here to download

Search This Blog

2 > 3 4

Monday, May 30, 2016

Android Datagram/UDP Client example


I posted "Java Datagram/UDP Server and Client, run on raspberry Pi" on my another blogspot. It's the Android version of the client.


MainActivity.java
package com.blogspot.android_er.androidudpclient;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

EditText editTextAddress, editTextPort;
Button buttonConnect;
TextView textViewState, textViewRx;

UdpClientHandler udpClientHandler;
UdpClientThread udpClientThread;

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

editTextAddress = (EditText) findViewById(R.id.address);
editTextPort = (EditText) findViewById(R.id.port);
buttonConnect = (Button) findViewById(R.id.connect);
textViewState = (TextView)findViewById(R.id.state);
textViewRx = (TextView)findViewById(R.id.received);

buttonConnect.setOnClickListener(buttonConnectOnClickListener);

udpClientHandler = new UdpClientHandler(this);
}

View.OnClickListener buttonConnectOnClickListener =
new View.OnClickListener() {

@Override
public void onClick(View arg0) {

udpClientThread = new UdpClientThread(
editTextAddress.getText().toString(),
Integer.parseInt(editTextPort.getText().toString()),
udpClientHandler);
udpClientThread.start();

buttonConnect.setEnabled(false);
}
};

private void updateState(String state){
textViewState.setText(state);
}

private void updateRxMsg(String rxmsg){
textViewRx.append(rxmsg + "\n");
}

private void clientEnd(){
udpClientThread = null;
textViewState.setText("clientEnd()");
buttonConnect.setEnabled(true);

}

public static class UdpClientHandler extends Handler {
public static final int UPDATE_STATE = 0;
public static final int UPDATE_MSG = 1;
public static final int UPDATE_END = 2;
private MainActivity parent;

public UdpClientHandler(MainActivity parent) {
super();
this.parent = parent;
}

@Override
public void handleMessage(Message msg) {

switch (msg.what){
case UPDATE_STATE:
parent.updateState((String)msg.obj);
break;
case UPDATE_MSG:
parent.updateRxMsg((String)msg.obj);
break;
case UPDATE_END:
parent.clientEnd();
break;
default:
super.handleMessage(msg);
}

}
}
}


UdpClientThread.java
package com.blogspot.android_er.androidudpclient;

import android.os.Message;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class UdpClientThread extends Thread{

String dstAddress;
int dstPort;
private boolean running;
MainActivity.UdpClientHandler handler;

DatagramSocket socket;
InetAddress address;

public UdpClientThread(String addr, int port, MainActivity.UdpClientHandler handler) {
super();
dstAddress = addr;
dstPort = port;
this.handler = handler;
}

public void setRunning(boolean running){
this.running = running;
}

private void sendState(String state){
handler.sendMessage(
Message.obtain(handler,
MainActivity.UdpClientHandler.UPDATE_STATE, state));
}

@Override
public void run() {
sendState("connecting...");

running = true;

try {
socket = new DatagramSocket();
address = InetAddress.getByName(dstAddress);

// send request
byte[] buf = new byte[256];

DatagramPacket packet =
new DatagramPacket(buf, buf.length, address, dstPort);
socket.send(packet);

sendState("connected");

// get response
packet = new DatagramPacket(buf, buf.length);


socket.receive(packet);
String line = new String(packet.getData(), 0, packet.getLength());

handler.sendMessage(
Message.obtain(handler, MainActivity.UdpClientHandler.UPDATE_MSG, line));

} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(socket != null){
socket.close();
handler.sendEmptyMessage(MainActivity.UdpClientHandler.UPDATE_END);
}
}

}
}


activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp"
android:orientation="vertical"
tools:context="com.blogspot.android_er.androidudpclient.MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:autoLink="web"
android:text="http://android-er.blogspot.com/"
android:textStyle="bold" />
<EditText
android:id="@+id/address"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="192.168."
android:hint="dstAddress" />
<EditText
android:id="@+id/port"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="4445"
android:hint="dstPort" />
<Button
android:id="@+id/connect"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Connect"/>

<TextView
android:id="@+id/state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="un-initiated"
android:textSize="20dp"/>

<TextView
android:id="@+id/received"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18dp"/>
</LinearLayout>


uses-permission of "android.permission.INTERNET" is needed in AndroidManifest.xml

download filesDownload the files .

Next:
Android Datagram/UDP Server example

No comments:

Post a Comment

Featured Post

Stumble Guys MOD APK 0.54.2

Popular Posts

Advertisement

2 > 3 4