Androidはサービス側として、PCはメッセージをプッシュします
2900 ワード
需要説明:需要は大体このような赤外線が門限を活性化するので、門限はPCを活性化して、PCはAndroidを活性化して、AndroidはEPCIDをスキャンして
第一歩:Android側のServer Socketを構築し、メッセージを受け入れる
サーバソケットを作成します.リスニングポートは9999で、使用されていないポートはいずれかです.
====
クライアントから送信されたメッセージを受信
以上の2つの方法は簡単なAndroid側のサーバーで、比較的短いので、コメントを見て理解するのは難しくないはずです.
ステップ2、接続の作成、メッセージの送信
もう1台のサービス側であるAndroidデバイスを接続
メッセージの送信
ここで、私はもう1台のAndroid携帯電話をクライアントとして、サービス側に接続し、メッセージを送信しています.前回は成功しなかったエラーメッセージがルーティングされていなかったことに注意してください.その後、pingしてシミュレータのIPが全然通じないことに気づきました.だから、まずネットワークが接続されていることを確認し、Appにはネットワーク権限が必要で、ネットワークがサブスレッドで操作されていることを覚えています.また、クライアントは通常、リンクが切断されていないことを確認するために、サービス側にデータを定期的に送信します.
第一歩:Android側のServer Socketを構築し、メッセージを受け入れる
サーバソケットを作成します.リスニングポートは9999で、使用されていないポートはいずれかです.
private static void startService() {
try {
// ServerSocket
ServerSocket serverSocket = new ServerSocket(9999);
Log.e("xxx","-- , 9999--");
// ,
while (true) {
Log.e("xxx","-- --");
Socket socket = serverSocket.accept(); //
Log.e("xxx"," :" + socket);
startReader(socket);
}
} catch (IOException e) {
e.printStackTrace();
}
}
====
クライアントから送信されたメッセージを受信
private static void startReader(final Socket socket) {
new Thread() {
@Override
public void run() {
DataInputStream reader;
try {
//
reader = new DataInputStream(socket.getInputStream());
while (true) {
Log.e("xxx","* *");
//
String msg = reader.readUTF();
Log.e("xxx"," :" + msg);
// ,
DataOutputStream ps = new DataOutputStream(socket.getOutputStream());
ps.writeUTF(" " + msg);
ps.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
以上の2つの方法は簡単なAndroid側のサーバーで、比較的短いので、コメントを見て理解するのは難しくないはずです.
ステップ2、接続の作成、メッセージの送信
もう1台のサービス側であるAndroidデバイスを接続
new Thread() {
@Override
public void run() {
try {
socket = new Socket("192.168.7.125", 9999);
Log.e("xxx", " :" + socket);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
メッセージの送信
new Thread() {
@Override
public void run() {
try {
// socket.getInputStream()
DataOutputStream writer = new DataOutputStream(socket.getOutputStream());
writer.writeUTF(" "); // UTF-8
Log.e("xxx"," ");
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
ここで、私はもう1台のAndroid携帯電話をクライアントとして、サービス側に接続し、メッセージを送信しています.前回は成功しなかったエラーメッセージがルーティングされていなかったことに注意してください.その後、pingしてシミュレータのIPが全然通じないことに気づきました.だから、まずネットワークが接続されていることを確認し、Appにはネットワーク権限が必要で、ネットワークがサブスレッドで操作されていることを覚えています.また、クライアントは通常、リンクが切断されていないことを確認するために、サービス側にデータを定期的に送信します.