Socket TCP / bluetooth

Fermé
oumaya - 31 août 2013 à 10:22
scinarf Messages postés 1119 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 - 4 sept. 2013 à 09:53
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();
}
}
}

1 réponse

scinarf Messages postés 1119 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
2 sept. 2013 à 13:22
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é.
0
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.
0
scinarf Messages postés 1119 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
4 sept. 2013 à 09:53
Suis bien la doc, tout est expliqué dedans donc ca ne devrait pas poser de problèmes
0