该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先 发送端:
package com.example.multicastclient;
import android.support.v7.app.ActionBarActivity;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;
import android.content.Context;
import android.content.Intent;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.MulticastLock;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class ClientMainActivity extends ActionBarActivity {
private Button send;
private TextView printout1;
static String destAddressStr = "224.224.224.224";
static int destPortInt = 9998;
static int TTLTime = 4;
int destPort = destPortInt;
int TTL = TTLTime;
MulticastLock multicastLock;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
allowMulticast();
printout1=(TextView) findViewById(R.id.printout1);
findViewById(R.id.send).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
try {
SendMulticastUdp();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
multicastLock.release();
}
private void allowMulticast() {
// TODO Auto-generated method stub
WifiManager wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);
multicastLock=wifiManager.createMulticastLock("multicast.test");
multicastLock.acquire();
}
protected void SendMulticastUdp() throws Exception {
// TODO Auto-generated method stub
MulticastSocket multiSocket =new MulticastSocket(9998);
InetAddress destAddress =InetAddress.getByName(destAddressStr);
if(!destAddress.isMulticastAddress()){//检测该地址是否是多播地址
printout1.setText("地址不是多播地址");
}
byte[] sendMSG = "#1029testmsg".getBytes();
DatagramPacket dp = new DatagramPacket(sendMSG, sendMSG.length, destAddress , destPort);
multiSocket.joinGroup(destAddress);
multiSocket.setTimeToLive(TTL);
multiSocket.send(dp);
//multiSocket.close();
}
}