編輯一個(gè)java組播應(yīng)用程序的過(guò)程如下
創(chuàng)新互聯(lián)建站是專業(yè)的珙縣網(wǎng)站建設(shè)公司,珙縣接單;提供成都網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行珙縣網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
1. 創(chuàng)建一個(gè)用于發(fā)送和接收的MulticastSocket組播套接字對(duì)象
2. 創(chuàng)建一個(gè)指定緩沖區(qū)大小及組播地址和端口的DatagramPacket組播數(shù)據(jù)包對(duì)象
3. 使用組播套接字joinGroup(),將其加入到一個(gè)組播
4. 使用組播套接字的send()方法,將組播數(shù)據(jù)包對(duì)象放入其中,發(fā)送組播數(shù)據(jù)包.
或者
使用組播套接字的receive()方法,將組播數(shù)據(jù)包對(duì)象放入其中,接收組播數(shù)據(jù)包
5. 解碼組播數(shù)據(jù)包提取信息,并依據(jù)得到的信息作出響應(yīng)String s = new String(dp.getData(), 0, dp.getLength());
6. 重復(fù)過(guò)程4和5,即在while循環(huán)中實(shí)現(xiàn)。
7. 使用組播套接字的leaveGroup()方法,離開(kāi)組播組;關(guān)閉組播套接字
接收組播數(shù)據(jù)包程序:
Java代碼
public class MulticastReceived {
public static void main(String[] args) throws Exception {
InetAddress group = InetAddress.getByName("224.0.0.4"); // 組播地址
int port = 4006; // 端口
MulticastSocket msr = null;
try {
msr = new MulticastSocket(port); // 1.創(chuàng)建一個(gè)用于發(fā)送和接收的MulticastSocket組播套接字對(duì)象
msr.joinGroup(group); // 3.使用組播套接字joinGroup(),將其加入到一個(gè)組播
byte[] buffer = new byte[8192];
System.out.println("接收數(shù)據(jù)包啟動(dòng)?。▎?dòng)時(shí)間:)" + new java.util.Date() + ")");
while (true) {
DatagramPacket dp = new DatagramPacket(buffer, buffer.length); // 2.創(chuàng)建一個(gè)指定緩沖區(qū)大小及組播地址和端口的DatagramPacket組播數(shù)據(jù)包對(duì)象
msr.receive(dp); // 4.使用組播套接字的receive()方法,將組播數(shù)據(jù)包對(duì)象放入其中,接收組播數(shù)據(jù)包
String s = new String(dp.getData(), 0, dp.getLength()); // 5.解碼組播數(shù)據(jù)包提取信息,并依據(jù)得到的信息作出響應(yīng)
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (msr != null) {
try {
msr.leaveGroup(group); // 7.使用組播套接字的leaveGroup()方法,離開(kāi)組播組
msr.close(); // 關(guān)閉組播套接字
} catch (IOException e) {
}
}
}
}
}
發(fā)送組播數(shù)據(jù)包程序:
Java代碼
public class MulticastSender {
public static void main(String[] args) throws Exception {
InetAddress group = InetAddress.getByName("224.0.0.1"); // 組播地址
int port = 4000; // 端口
MulticastSocket mss = null;
try {
mss = new MulticastSocket(port); // 1.創(chuàng)建一個(gè)用于發(fā)送和接收的MulticastSocket組播套接字對(duì)象
mss.joinGroup(group); // 3.使用組播套接字joinGroup(),將其加入到一個(gè)組播
byte[] buffer = new byte[8192];
System.out.println("接收數(shù)據(jù)包啟動(dòng)?。▎?dòng)時(shí)間:)" + new java.util.Date() + ")");
while (true) {
String message = "Hello" + new java.util.Date();
byte[] buffer2 = message.getBytes(); // 2.創(chuàng)建一個(gè)指定緩沖區(qū)大小及組播地址和端口的DatagramPacket組播數(shù)據(jù)包對(duì)象
DatagramPacket dp = new DatagramPacket(buffer, buffer.length, group, port);
// msr.receive(dp); //接收組播數(shù)據(jù)包
mss.send(dp); // 4.使用組播套接字的send()方法,將組播數(shù)據(jù)包對(duì)象放入其中,發(fā)送組播數(shù)據(jù)包
// String s = new String(dp.getData(), 0, dp.getLength()); //5.解碼組播數(shù)據(jù)包提取信息,并依據(jù)得到的信息作出響應(yīng)
System.out.println("發(fā)送數(shù)據(jù)包給" + group + ":" + port);
Thread.sleep(1000);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (mss != null) {
try {
mss.leaveGroup(group); // 7.使用組播套接字的leaveGroup()方法,離開(kāi)組播組
mss.close(); // 關(guān)閉組播套接字
} catch (IOException e) {
}
}
}
}
}
dp是類DatagramPacket的對(duì)象。getaddress是獲取發(fā)送信息計(jì)算機(jī)的IP地址。前者返回的不是字符串格式,后者返回是是字符串格式吧
android中的控件如果在xml布局文件中把控件的layout_width和layout_height寫成固定值了,好像就不能再在程序中更改該控件的高度和寬度了,不知哪位大俠有何良策可以指教一二,如
xml文件內(nèi)容如下:
LinearLayout
android:id="@id/dialog_bottom_neutral"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:gravity="center"
Button
android:id="@id/dialog_bottom_neutral_button"
android:layout_width="80.0dip"
android:layout_height="28.0dip"
android:background="@drawable/dlg_button"
android:gravity="center"
android:singleLine="true"
android:text="mid"
android:textColor="@drawable/dlg_button_text_color"
android:textSize="14.0sp" /
/LinearLayout
總結(jié):如何在程序中動(dòng)態(tài)設(shè)置button的寬度和高度,在程序中使用button.width和button.height設(shè)置沒(méi)用,用LayoutParmas設(shè)置也沒(méi)用。
dp表示dynamic programing,這里programing不是編程的意思,意為規(guī)劃
dp就是動(dòng)態(tài)規(guī)劃,本來(lái)是運(yùn)籌學(xué)里面的一種技術(shù),現(xiàn)在多用在編程里面。特別是信息學(xué)競(jìng)賽和acm競(jìng)賽