salve a tutti volevo fare una piccola chat android per due cellulari e ho provato a utilizzare il codice usato in questo tutorial:
http://http://www.youtube.com/watch?v=KgOrhLu5XUo
pur avendo dato i permessi per internet contrariamente al tizio muto del video a me il client riesce a ricevere la stringa dal server ma il serve non riesce a ricevere il messaggio dal client.
Facendo delle prove con un server in java e con telnet ho visto che l'app client funziona (invia il messaggio)
il tutorial utilizza l'idirizzo 127.0.0.1 e provando le due app in locale sullo stesso avd mostra il corretto funzionamento delle stesse, nel mio caso le app non funzionano ne sullo stesso avd ne con l'indirizzo 10.0.2.2 ne con 10.0.2.15 (letto dalle info dell' avd) ne su due dispositivi fisici.
potreste darmi qualche suggerimento?
ringrazio anticipatamente chi mi dedicherà un minuto.
%SERVER CODE
MainActivity.java
codice:
package com.example.serversocket;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity implements DataDisplay {
TextView serverMessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serverMessage=(TextView)findViewById(R.id.textView1);
}
public void connect(View view)
{
MyServer server= new MyServer();
server.setEventListener(this);
server.startListening();
}
public void Display(String message)
{
serverMessage.setText(""+message);
}
}
DataDisplay.java
codice:
package com.example.serversocket;
public interface DataDisplay {
void Display(String message);
}
MySever.java
codice:
package com.example.serversocket;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import android.os.Handler;
import android.os.Message;
public class MyServer {
Thread m_objThread;
ServerSocket m_server;
String m_strMessage;
DataDisplay m_dataDisplay;
Object m_connected;
public MyServer()
{
}
public void setEventListener(DataDisplay dataDisplay)
{
m_dataDisplay=dataDisplay;
}
public void startListening()
{
m_objThread= new Thread(new Runnable() {
public void run()
{
try{
m_server= new ServerSocket(2001);
Socket connectedSocket = m_server.accept();
Message clientmessage=Message.obtain();
ObjectInputStream ois = new ObjectInputStream(connectedSocket.getInputStream());
String strMessage=(String) ois.readObject();
clientmessage.obj=strMessage;
mHandler.sendMessage(clientmessage);
ObjectOutputStream oos = new ObjectOutputStream(connectedSocket.getOutputStream());
oos.writeObject("Connected");
oos.flush();
ois.close();
oos.close();
m_server.close();
}catch (Exception e)
{
Message msg3=Message.obtain();
msg3.obj=e.getMessage();
mHandler.sendMessage(msg3);
}
}});
m_objThread.start();
}
Handler mHandler = new Handler(){};
public void handleMessage(Message status){
m_dataDisplay.Display(status.obj.toString());
}
};
%Client code
MainActivity.java
codice:
package com.example.clientsocket;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
import java.net.*;
public class MainActivity extends Activity {
TextView serverMessage;
Thread m_objThreadClient;
Socket clientSocket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
serverMessage = (TextView)findViewById(R.id.textView1);
}
public void Start(View view)
{
m_objThreadClient=new Thread(new Runnable() {
public void run()
{
try
{
clientSocket = new Socket("127.0.0.1",2001);
ObjectOutputStream oos =new ObjectOutputStream(clientSocket.getOutputStream());
oos.writeObject("Hallo there");
Message serverMessage= Message.obtain();
ObjectInputStream ois = new ObjectInputStream(clientSocket.getInputStream());
String strMessage = (String)ois.readObject();
serverMessage.obj=strMessage;
mHandler.sendMessage(serverMessage);
oos.flush();
oos.close();
ois.close();
}catch (Exception e)
{
e.printStackTrace();
}
}
});
m_objThreadClient.start();
}
Handler mHandler = new Handler() {
public void handleMessage(Message msg){
messageDisplay(msg.obj.toString());
}
};
public void messageDisplay(String servermessage)
{
serverMessage.setText(""+servermessage);
}
}
PLEASE HELP MEE