Socket TCP / bluetooth
oumaya
-
scinarf Messages postés 1119 Date d'inscription Statut Membre Dernière intervention -
scinarf Messages postés 1119 Date d'inscription Statut Membre Dernière intervention -
Bonjour;
le but de mon projet se de faire communiquer entre appareil android et pc via bluetooth, j'ai un programme en java qui joue le role d'un serveur java et j'ai le code coté android, utilisant les sockets TCP, mais pour mon projet , il est demander de faire ca avec le protocole Bluetooth, comment puisse je remplacer les sockets TCP par les sockets Bluetooth, et que-est-ce qu'il faut chenger , voila le code coté serveur (pc):
package com.oumaya.app.serveurBluetooth;
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!");
}
}
*********************************************** avec :
package com.oumaya.app.serveurBluetooth;
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);
}
}
}
**************************** et le code coté android
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();
}
}
}
le but de mon projet se de faire communiquer entre appareil android et pc via bluetooth, j'ai un programme en java qui joue le role d'un serveur java et j'ai le code coté android, utilisant les sockets TCP, mais pour mon projet , il est demander de faire ca avec le protocole Bluetooth, comment puisse je remplacer les sockets TCP par les sockets Bluetooth, et que-est-ce qu'il faut chenger , voila le code coté serveur (pc):
package com.oumaya.app.serveurBluetooth;
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!");
}
}
*********************************************** avec :
package com.oumaya.app.serveurBluetooth;
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);
}
}
}
**************************** et le code coté android
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();
}
}
}
A voir également:
- Socket bluetooth
- Norme bluetooth - Guide
- Activer bluetooth tv samsung menu caché ✓ - Forum TV & Vidéo
- Edenwood tv bluetooth - Forum TV & Vidéo
- Homday x-pert écouteur bluetooth notice ✓ - Forum Casque et écouteurs
- Bluetooth pour pc 32 bits - Télécharger - Pilotes & Matériel
1 réponse
Bonjour,
Pour utiliser le bluetooth sous android (en java)
https://developer.android.com/guide/topics/connectivity/bluetooth.html
Toutes la doc est la.
Alors ce qu'il faut faire :
1-Vérifier que le terminal dispose d'un bluetooth
2-Activer le bluetooth du terminal
3-Chercher les appareils qui sont disponibles et déjà associés avec le terminal
(Il faut au préalable associé manuellement le pc et le terminal android en bluetooth)
4-Récupérer un Objet BluetoothDevice grâce à 3-
5-Créer un socket grâce à l'objet récupéré 4-
6-Créer les InputStream et les OutputStream du socket
7-Faire protocole de communication
Le tour est joué, et c'est pas très compliqué.
Pour utiliser le bluetooth sous android (en java)
https://developer.android.com/guide/topics/connectivity/bluetooth.html
Toutes la doc est la.
Alors ce qu'il faut faire :
1-Vérifier que le terminal dispose d'un bluetooth
2-Activer le bluetooth du terminal
3-Chercher les appareils qui sont disponibles et déjà associés avec le terminal
(Il faut au préalable associé manuellement le pc et le terminal android en bluetooth)
4-Récupérer un Objet BluetoothDevice grâce à 3-
5-Créer un socket grâce à l'objet récupéré 4-
6-Créer les InputStream et les OutputStream du socket
7-Faire protocole de communication
Le tour est joué, et c'est pas très compliqué.
oumaya
merci scinarf :) mais les choses encore compliqués, pour cet exemple la création des InputStream et les OutputStream du socket n'est pas évidentes, en plus il faut que je faire le meme chose pour récuperer le message envoyer par l'android.
scinarf
Messages postés
1119
Date d'inscription
Statut
Membre
Dernière intervention
252
Suis bien la doc, tout est expliqué dedans donc ca ne devrait pas poser de problèmes