<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 非魚 閱讀(4134) 評論(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幫我呀
    主站蜘蛛池模板: 亚洲成a人无码av波多野按摩| 亚洲高清乱码午夜电影网| 亚洲人成网站在线观看青青 | 免费一级肉体全黄毛片| 91久久青青草原线免费| 中国内地毛片免费高清| 免费一区二区无码视频在线播放| 亚洲精品伊人久久久久| 亚洲激情在线观看| 亚洲大尺度无码无码专区| 亚洲视频一区二区| 国产真人无遮挡作爱免费视频| 免费H网站在线观看的| 日韩插啊免费视频在线观看| 成人自慰女黄网站免费大全 | jlzzjlzz亚洲乱熟在线播放| 日本免费网站在线观看| 久久久久国色AV免费观看性色| 最近中文字幕无免费| 久久久久国色av免费看| 午夜无码A级毛片免费视频| 三级毛片在线免费观看| 在线免费视频你懂的| 国产大片免费天天看| 一区二区三区在线免费观看视频 | 国语成本人片免费av无码| 91短视频免费在线观看| 91精品国产免费久久国语麻豆| 免费黄色电影在线观看| 日本免费高清视频| 国产成人一区二区三区视频免费| 亚洲免费人成在线视频观看| 免费国产成人α片| 一级毛片成人免费看免费不卡| 一级毛片全部免费播放| 综合在线免费视频| 女人张开腿等男人桶免费视频| 妞干网免费视频观看| 国产网站免费观看| 免费在线看片网站| 久久精品国产精品亚洲下载|