Connexion entre Android et Java Server à l’aide du service de réseau

Je travaille sur une connexion entre une application Android et un serveur Java, j’utilise Jmdns sur le serveur et Discover Network Service sur Android pour effectuer la communication. Cependant, Android continue de rechercher un service pour se connecter et ne trouve jamais mon service. Les deux sont sur le même réseau (pas localhost).

J’ai pris comme exemple la question posée ici: communication entre le serveur Java et le client Android à l’aide de la découverte du service réseau

Code du serveur

public class Server { public static Ssortingng mServiceName = "NsdApp"; public static final Ssortingng SERVICE_TYPE = "_http._tcp."; static ServerSocket mServerSocket; public static void main(Ssortingng[] args) throws IOException { System.out.println("START"); try { mServerSocket = new ServerSocket(0); } catch (IOException e) { System.out.println("ServerSocket(0) FAILED"); } int mPort = mServerSocket.getLocalPort(); JmDNS jmdns = JmDNS.create(); ServiceInfo info = ServiceInfo.create(SERVICE_TYPE, mServiceName, mPort, "B"); jmdns.registerService(info); System.out.println("REGISTERED"); jmdns.close(); Thread mReceiveMessage = new Thread(new ReceiveMessage()); mReceiveMessage.start(); System.out.println("END"); } public static class ReceiveMessage implements Runnable { public void run() { System.out.println("WAITING_FOR_MESSAGE"); try { Socket clientSocket = mServerSocket.accept(); InputStreamReader inputStreamReader = new InputStreamReader(clientSocket.getInputStream()); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); Ssortingng message = bufferedReader.readLine(); System.out.println(message); bufferedReader.close(); inputStreamReader.close(); clientSocket.close(); System.out.println("END_THREAD"); } catch (IOException ex) { System.out.println("Problem in message reading"); } } } } 

Code Client

  public class MainActivity extends Activity { public static final Ssortingng TAG = "NSD_DISCOVER"; public static final Ssortingng SERVICE_TYPE = "_http._tcp."; NsdManager.DiscoveryListener mDiscoveryListener; NsdManager.ResolveListener mResolveListener; NsdManager mNsdManager; int port; InetAddress host; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v(TAG, "onCreate"); mNsdManager = (NsdManager) getSystemService(Context.NSD_SERVICE); initializeResolveListener(); initializeDiscoveryListener(); mNsdManager.discoverServices(SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener); } public void initializeDiscoveryListener() { mDiscoveryListener = new NsdManager.DiscoveryListener() { @Override public void onDiscoveryStarted(Ssortingng regType) { Log.v(TAG, "onDiscoveryStarted Service discovery started"); } @Override public void onServiceFound(NsdServiceInfo service) { if (!service.getServiceType().equals(SERVICE_TYPE)) { Log.v(TAG, "onServiceFound Unknown Service Type: " + service.getServiceType()); } else { Log.v(TAG, "onServiceFound Known Service Type: " + service.getServiceType()); mNsdManager.resolveService(service, mResolveListener); } } @Override public void onServiceLost(NsdServiceInfo service) { Log.e(TAG, "service lost" + service); } @Override public void onDiscoveryStopped(Ssortingng serviceType) { Log.i(TAG, "Discovery stopped: " + serviceType); } @Override public void onStartDiscoveryFailed(Ssortingng serviceType, int errorCode) { Log.e(TAG, "Discovery failed: Error code:" + errorCode); mNsdManager.stopServiceDiscovery(this); } @Override public void onStopDiscoveryFailed(Ssortingng serviceType, int errorCode) { Log.e(TAG, "Discovery failed: Error code:" + errorCode); mNsdManager.stopServiceDiscovery(this); } }; } public void initializeResolveListener() { mResolveListener = new NsdManager.ResolveListener() { @Override public void onResolveFailed(NsdServiceInfo serviceInfo, int errorCode) { Log.e(TAG, "onResolveFailed Resolve failed" + errorCode); } @Override public void onServiceResolved(NsdServiceInfo serviceInfo) { Log.v(TAG, "onServiceResolved Resolve Succeeded. " + serviceInfo); port = serviceInfo.getPort(); host = serviceInfo.getHost(); SendMessage sendMessageTask = new SendMessage(); sendMessageTask.execute(); } }; } private class SendMessage extends AsyncTask { @Override protected Void doInBackground(Void... params) { try { Socket client; PrintWriter printwriter; client = new Socket(host, port); printwriter = new PrintWriter(client.getOutputStream(), true); printwriter.write("hello world"); printwriter.flush(); printwriter.close(); client.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }