Simple udp server and client for android and get unicast message

fatemaezzahra Messages postés 1 Date d'inscription vendredi 9 mai 2014 Statut Membre Dernière intervention 9 mai 2014 - 9 mai 2014 à 18:08
Whismeril Messages postés 19036 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 - 9 mai 2014 à 21:42

import java.io.*;
import java.net.*;
import java.util.*;

/**la classe ServeurChat représente la partie serveur du socket.*/
public class ServeurChat {

private static final String USAGE = "Usage: java ServeurChat";

/**Numéro de port par défaut sur ??lequel ce serveur à être exécuté. */

private static final int PORT_NUMBER = 9000;

private List<PrintWriter> clients;

/**Creer un nouveau serveur. */
public ServeurChat() {

/**LinkedList : liste doublement chaînée (parcours de la liste dans les deux sens)*/
clients = new LinkedList<PrintWriter>();
}

/** Lancer le serveur. */
public void start() {
System.out.println("serveur lancer..."
+ PORT_NUMBER + "!");
try {
/**créer une instance de la classe SocketServer en précisant le port en paramètre.*/
ServerSocket s = new ServerSocket(PORT_NUMBER);

/**définir une boucle sans fin contenant des actions.*/
for (;;) {

/**appelle de la méthode accept() qui renvoie une socket lors d'une nouvelle connexion.*/
Socket socketClient = s.accept();
new Test(socketClient).start();
}
} catch (Exception e) {
e.printStackTrace();
}
/**si on ne peut pas lancer le serveur sur ce port, on arrete le programme*/
System.out.println("Impossible d'attendre sur le port !!");
}


/**Ajouter un nouveau client identifié par le print writer donné */
private void addClient(PrintWriter out) {
synchronized(clients) {
clients.add(out);
}
}

/* Ajouter un client par le print Writer*/
private void removeClient(PrintWriter out) {
synchronized(clients) {
clients.remove(out);
}
}

/*Broadcast des données */
private void broadcast(String msg) {
for (PrintWriter out: clients) {
out.println(msg);
out.flush();
}
}

public static void main(String[] args) {
if (args.length > 0) {
System.out.println(USAGE);
System.exit(-1);
}
new ServeurChat().start();
}

/**Cette classe de recevoir des messages à partir d'un
* Client et diffuse les à tous les clients, y compris le message
* expéditeur. */
private class Test extends Thread {

/**Socket pour lire les messages des clients . */
private Socket socketClient;


public Test(Socket socketClient) {
this.socketClient = socketClient;
}

/**Commencer à recevoir et diffuser des messages. */
public void run() {
PrintWriter out = null;
try {
out = new PrintWriter(
new OutputStreamWriter(socketClient.getOutputStream()));

/**informer le serveur de ce nouveau client*/
ServeurChat.this.addClient(out);

out.println("Bienvenu dans Application chat Android! ");
out.println("Entrer BYE pour exit.");
out.flush();
/**Obtenir un flux en entrée et en sortie à partir de la socket.*/

BufferedReader in
= new BufferedReader(
new InputStreamReader(socketClient.getInputStream()));
for (;;) {
String msg = in.readLine();
if (msg == null) {
break;
} else {
if (msg.trim().equals("BYE"))
break;
System.out.println("Reçu: " + msg);

ServeurChat.this.broadcast(msg);
}
}
socketClient.close();
ServeurChat.this.removeClient(out);
} catch (Exception e) {
if (out != null) {
ServeurChat.this.removeClient(out);
}
e.printStackTrace();
}
}
}
}

***********


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class AndyChatActivity extends Activity {

private Handler handler = new Handler();
public ListView msgView;
public ArrayAdapter<String> msgList;
// public ArrayAdapter<String> msgList=new ArrayAdapter<String>(this,
// android.R.layout.simple_list_item_1);;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

msgView = (ListView) findViewById(R.id.listView);

msgList = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1);
msgView.setAdapter(msgList);

// msgView.smoothScrollToPosition(msgList.getCount() - 1);

Button btnSend = (Button) findViewById(R.id.btn_Send);

receiveMsg();
btnSend.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

final EditText txtEdit = (EditText) findViewById(R.id.txt_inputText);
//msgList.add(txtEdit.getText().toString());
sendMessageToServer(txtEdit.getText().toString());
msgView.smoothScrollToPosition(msgList.getCount() - 1);

}
});

// receiveMsg();
//----------------------------
//server msg receieve
//-----------------------



//End Receive msg from server//
}
public void sendMessageToServer(String str) {

final String str1=str;
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
//String host = "opuntia.cs.utep.edu";
String host="191.168.43.62";

PrintWriter out;
try {
Socket socket = new Socket(host, 9000);
out = new PrintWriter(socket.getOutputStream());

// out.println("hello");
out.println(str1);
Log.d("", "hello");
out.flush();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("", "hello222");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("", "hello4333");
}

}
}).start();
}



public void receiveMsg()
{
new Thread(new Runnable()
{
@Override
public void run() {
// TODO Auto-generated method stub

//final String host="opuntia.cs.utep.edu";
final String host="191.168.43.62";
//final String host="localhost";
Socket socket = null ;
BufferedReader in = null;
try {
socket = new Socket(host,9000);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

while(true)
{
String msg = null;
try {
msg = in.readLine();
Log.d("","MSGGG: "+ msg);

//msgList.add(msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(msg == null)
{
break;
}
else
{
displayMsg(msg);
}
}

}
}).start();


}

public void displayMsg(String msg)
{
final String mssg=msg;
handler.post(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
msgList.add(mssg);
msgView.setAdapter(msgList);
msgView.smoothScrollToPosition(msgList.getCount() - 1);
Log.d("","hi");
}
});

}

}
*********
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.UTEP.android"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AndyChatActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

1 réponse

Whismeril Messages postés 19036 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 2 mai 2024 656
9 mai 2014 à 21:42
Et alors?
0
Rejoignez-nous