<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    潛魚在淵

    Concentrating on Architectures.

    posts - 77, comments - 309, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    為什么MulticastSocket不能正常工作?

    Posted on 2006-06-28 23:35 非魚 閱讀(4128) 評論(2)  編輯  收藏 所屬分類: Java技術
    ??? 最近用到了MulticastSocket,發現在有些情況下它不能工作,當然這是編碼的問題,是一個BUG,不過這個BUG較少出現,一旦出現了也讓人摸不著頭緒。

    ??? 由于以前沒有用過這個東東,首先在網上找了個簡單的例子:

    ??? Server端:

    ?1?import?java.net.DatagramPacket;
    ?2?import?java.net.InetAddress;
    ?3?import?java.net.MulticastSocket;
    ?4?
    ?5?public?class?Server?{
    ?6???public?static?void?main(String?[]?arstring)?{
    ?7?????try?{
    ?8???????//?Create?a?multicast?datagram?socket?for?receiving?IP
    ?9???????//??multicast?packets.??Join?the?multicast?group?at
    10???????//??230.0.0.1,?port?7777.
    11???????MulticastSocket?multicastSocket?=?new?MulticastSocket(7777);
    12???????InetAddress?inetAddress?=?InetAddress.getByName("230.0.0.1");
    13???????multicastSocket.joinGroup(inetAddress);
    14???????//?Loop?forever?and?receive?messages?from?clients.??Print
    15???????//??the?received?messages.
    16???????while?(true)?{
    17?????????byte?[]?arb?=?new?byte?[100];
    18?????????DatagramPacket?datagramPacket?=?new?DatagramPacket(arb,?arb.length);
    19?????????multicastSocket.receive(datagramPacket);
    20?????????System.out.println(new?String(arb));
    21???????}
    22?????}
    23?????catch?(Exception?exception)?{
    24???????exception.printStackTrace();
    25?????}
    26???}
    27?}

    ??? Client端:

    ?1?public?class?Client?{
    ?2???public?static?void?main(String?[]?arstring)?{
    ?3?????try?{
    ?4???????//?Create?a?datagram?package?and?send?it?to?the?multicast
    ?5???????//??group?at?230.0.0.1,?port?7777.
    ?6???????for?(;?;)?{
    ?7?????????byte?[]?arb?=?new?byte?[]{'h',?'e',?'l',?'l',?'o'};
    ?8?????????InetAddress?inetAddress?=?InetAddress.getByName("230.0.0.1");
    ?9?????????DatagramPacket?datagramPacket?=
    10?????????????????new?DatagramPacket(arb,?arb.length,?inetAddress,?7777);
    11?????????MulticastSocket?multicastSocket?=?new?MulticastSocket();
    12?//??????multicastSocket.joinGroup(inetAddress);
    13?????????multicastSocket.send(datagramPacket);
    14???????}
    15?????}
    16?????catch?(Exception?exception)?{
    17???????exception.printStackTrace();
    18?????}
    19???}
    20?}

    ??? 在公司編譯、運行都正常,回到家里發現Server不能收到broadcast消息了。跟蹤程序也沒有發現問題,網上也沒有找到答案。后來考慮到公司和家 里的網絡情況不同:公司里是通過內網連接到INTERNET;在家則是在局域網上撥號連接到INTERNET,相當于有兩個邏輯的網絡接口卡。于是在上述 例子中增加如下代碼:

    multicastSocket.setNetworkInterface(NetworkInterface.getByInetAddress(InetAddress.getLocalHost()));

    ??? 再次測試,成功!

    ??? 總結:使用MulticastSocket時,如果發現broadcast不成功,要注意是否使用了多個網絡接口卡(物理的或邏輯的)。

    評論

    # re: 為什么MulticastSocket不能正常工作?  回復  更多評論   

    2006-06-29 19:59 by lizongbo

    我昨天調試rmi也遇到類似的問題。

    也是雙網卡,死活會先認內網ip,后來終于找到原因了,呵呵

    # re: 為什么MulticastSocket不能正常工作?  回復  更多評論   

    2007-10-24 11:57 by 青銅人
    我也遇到這個情況,但這解決不了。請樓主加我qq:278216928幫我呀
    主站蜘蛛池模板: 久久久久久久久久久免费精品 | 亚洲人成色7777在线观看不卡 | 97无码免费人妻超级碰碰碰碰| 亚洲精品国产精品乱码不99| 一级毛片正片免费视频手机看 | 亚洲午夜AV无码专区在线播放 | 亚洲精品NV久久久久久久久久| 久久久久久久久无码精品亚洲日韩| 免费看美女被靠到爽的视频| 亚洲一区二区三区国产精华液| 免费一本色道久久一区| 亚洲国产日韩综合久久精品| 麻豆成人精品国产免费| 亚洲av日韩av永久在线观看| 亚洲国产成人a精品不卡在线| 国产特黄特色的大片观看免费视频 | 亚洲国产一区二区三区| 久久免费99精品国产自在现线| 精品国产人成亚洲区| 99精品免费视品| 亚洲色图校园春色| 免费无码精品黄AV电影| 亚洲熟妇无码一区二区三区| 免费v片在线观看品善网| yellow免费网站| 亚洲黄色免费网站| 女人18毛片免费观看| 免费VA在线观看无码| 亚洲精品无码乱码成人| aⅴ免费在线观看| 久久精品国产亚洲AV| 伊伊人成亚洲综合人网7777| 国产成人精品一区二区三区免费| 4480yy私人影院亚洲| 处破痛哭A√18成年片免费| 一级人做人a爰免费视频| 亚洲白色白色在线播放| 免费v片在线观看| 99re热精品视频国产免费| 在线观看日本亚洲一区| 国产亚洲精品高清在线|