Итак, я собираюсь сделать пошаговую игру, в которой игроки соединяются через сеть.Игроки отправят объект, содержащий информацию об их раунде.Я установил соединение между двумя эмуляторами, одним сервером и другим клиентом.Я использую сокеты (TCP).
Сейчас я не могу понять, как прослушивать объекты, отправляемые в ObjectInputStream, чтобы при отправке и получении нового объекта я мог действоватьна содержание предметов.Так что, возможно, я хочу прослушиватель, который слушает inStream, вероятно, в другом потоке, но как?Любые идеи ???
Код, который я использую
ClientActivity.java:
public class ClientActivity extends Activity {
private EditText et;
private Client c;
private TextView tv;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
et =(EditText)findViewById(R.id.clientTxt);
tv = (TextView)findViewById(R.id.recievedTxt);
c = new Client(tv);
c.start();
try {
tv.setText(c.setText());
} catch (Exception e) {}
}
}
Client.java
public class Client extends Thread {
private final static String TAG ="Client";
private final static String IP = "10.0.2.2";
private final static int PORT = 12345;
private Socket s;
private ObjectOutputStream out;
private ObjectInputStream in;
private TextView tv;
public Client(TextView tv) {
this.tv = tv;
}
public void run(){
s = null;
out = null;
in = null;
try {
s = new Socket(IP, PORT);
Log.v(TAG, "C: Connected to server" + s.toString());
out = new ObjectOutputStream(s.getOutputStream());
in = new ObjectInputStream(s.getInputStream());
out.writeChars("PING to server from client");
} catch(IOException e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
s.close();
} catch(IOException e) {}
}
}
}
ServerActivity.java
public class ServerActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Server().run();
}
}
Server.java
public class Server extends Thread {
private static final String TAG = "ServerThread";
private static final int PORT = 12345;
private boolean connected;
public void run() {
ServerSocket ss = null;
Socket s = null;
PrintWriter out = null;
BufferedReader in = null;
try {
Log.i(TAG, "Start server");
ss = new ServerSocket(PORT);
Log.i(TAG, "ServerSocket created waiting for Client..");
s = ss.accept();
Log.v(TAG, "Client connected");
out = new PrintWriter(s.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out.println("Welcome client.."); //send text to client
String res = in.readLine(); //reading text from client
Log.i(TAG, "message from client " + res);
}catch(IOException e) {
e.printStackTrace();
} finally {
try {
out.close();
in.close();
s.close();
ss.close();
} catch (IOException e) {}
}
}
}