潛魚(yú)在淵

          Concentrating on Architectures.

          posts - 77, comments - 309, trackbacks - 0, articles - 0
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          ??? 最近用到了MulticastSocket,發(fā)現(xiàn)在有些情況下它不能工作,當(dāng)然這是編碼的問(wèn)題,是一個(gè)BUG,不過(guò)這個(gè)BUG較少出現(xiàn),一旦出現(xiàn)了也讓人摸不著頭緒。

          ??? 由于以前沒(méi)有用過(guò)這個(gè)東東,首先在網(wǎng)上找了個(gè)簡(jiǎn)單的例子:

          ??? 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?}

          ??? 在公司編譯、運(yùn)行都正常,回到家里發(fā)現(xiàn)Server不能收到broadcast消息了。跟蹤程序也沒(méi)有發(fā)現(xiàn)問(wèn)題,網(wǎng)上也沒(méi)有找到答案。后來(lái)考慮到公司和家 里的網(wǎng)絡(luò)情況不同:公司里是通過(guò)內(nèi)網(wǎng)連接到INTERNET;在家則是在局域網(wǎng)上撥號(hào)連接到INTERNET,相當(dāng)于有兩個(gè)邏輯的網(wǎng)絡(luò)接口卡。于是在上述 例子中增加如下代碼:

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

          ??? 再次測(cè)試,成功!

          ??? 總結(jié):使用MulticastSocket時(shí),如果發(fā)現(xiàn)broadcast不成功,要注意是否使用了多個(gè)網(wǎng)絡(luò)接口卡(物理的或邏輯的)。

          posted @ 2006-06-28 23:35 非魚(yú) 閱讀(4132) | 評(píng)論 (2)編輯 收藏

               摘要: 忽然想到這個(gè)話題,是因?yàn)樽x書(shū)、思考、生活的一篇BLOG:代碼質(zhì)量與文檔質(zhì)量。當(dāng)然如果莊子[注1]只是說(shuō)代碼質(zhì)量或(比較)文檔質(zhì)量,我也就不會(huì)有什么想法了。可是該文一開(kāi)始就上升到了“項(xiàng)目質(zhì)量”的高度,在吸引了足夠的眼球之后,又偷偷的把“項(xiàng)目質(zhì)量”的概念換成了“代碼質(zhì)量”。  閱讀全文

          posted @ 2006-04-24 00:42 非魚(yú) 閱讀(1851) | 評(píng)論 (1)編輯 收藏

               摘要: 我們?cè)谟懻搼?yīng)用軟件的需求和設(shè)計(jì)的時(shí)候,常常會(huì)說(shuō):“我覺(jué)得這個(gè)需求不合理。”或者說(shuō):“按照我的經(jīng)驗(yàn),這樣子設(shè)計(jì)是不合理的?!蓖覀冞@樣說(shuō)的時(shí)候,是根據(jù)自己的經(jīng)驗(yàn)和直覺(jué)來(lái)判斷的。這樣的理由往往不被認(rèn)同和接受,所以最終的結(jié)果可能并沒(méi)有向我們所想象的方向發(fā)展,直到最終我們得到一個(gè)教訓(xùn)。  閱讀全文

          posted @ 2006-03-29 00:28 非魚(yú) 閱讀(16877) | 評(píng)論 (11)編輯 收藏

               摘要: 我想要的ORM。  閱讀全文

          posted @ 2006-01-12 00:39 非魚(yú) 閱讀(3254) | 評(píng)論 (3)編輯 收藏

               摘要: 關(guān)于架構(gòu)的定義非常多,它們互相接近,但又有細(xì)微的差別。這些定義都基于系統(tǒng)來(lái)描述的。所以要理解架構(gòu),首先要理解系統(tǒng)的定義。  閱讀全文

          posted @ 2005-12-26 23:55 非魚(yú) 閱讀(3230) | 評(píng)論 (3)編輯 收藏

               摘要: 在分布式系統(tǒng)中,存在多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都有自己的應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)系統(tǒng)。這些節(jié)點(diǎn)產(chǎn)生的信息對(duì)象可能被本地節(jié)點(diǎn)或異地節(jié)點(diǎn)所訪問(wèn);在整個(gè)分布式系統(tǒng)中,也存在一些全局的信息對(duì)象,它們被分布式系統(tǒng)中的所有節(jié)點(diǎn)訪問(wèn)。  閱讀全文

          posted @ 2005-12-21 22:58 非魚(yú) 閱讀(2833) | 評(píng)論 (5)編輯 收藏

               摘要: 軟件架構(gòu)師不是建筑架構(gòu)師。他們之間除了名字,沒(méi)有任何的共同之處。把軟件架構(gòu)師和建筑架構(gòu)師類比,甚至把他們等同起來(lái),是一種錯(cuò)誤的觀念。  閱讀全文

          posted @ 2005-12-20 23:25 非魚(yú) 閱讀(3223) | 評(píng)論 (6)編輯 收藏

               摘要: 今天被鄙視了一下。一個(gè)編碼比我好的朋友說(shuō):“非魚(yú),說(shuō)實(shí)在的,我挺鄙視你搞的架構(gòu)師小組的。基本功不扎實(shí),就搞什么架構(gòu)師,是我一向鄙視的行為?!逼鋵?shí)我自己也認(rèn)為自己不是一個(gè)合格的架構(gòu)師,或許勉強(qiáng)算是一個(gè)預(yù)備役的架構(gòu)師吧。  閱讀全文

          posted @ 2005-12-17 16:40 非魚(yú) 閱讀(3179) | 評(píng)論 (16)編輯 收藏

               摘要: 上一篇講了發(fā)行管理的一些基本理論,最主要最根本的一點(diǎn)就是不要對(duì)發(fā)行的內(nèi)容失去控制。在這個(gè)基礎(chǔ)上逐步加強(qiáng)對(duì)發(fā)行節(jié)奏的協(xié)調(diào),可以形成良好的軟件發(fā)行管理制度,提高軟件發(fā)行能力。下面要說(shuō)的是發(fā)行過(guò)程中的一些細(xì)節(jié)。  閱讀全文

          posted @ 2005-12-16 21:31 非魚(yú) 閱讀(2324) | 評(píng)論 (2)編輯 收藏

               摘要: 發(fā)行是產(chǎn)品開(kāi)發(fā)完成并交付客戶安裝、配置、使用的過(guò)程。軟件發(fā)行做為生產(chǎn)完成或階段性完成時(shí)刻的活動(dòng),不僅是一個(gè)短時(shí)期的任務(wù),它和開(kāi)發(fā)過(guò)程中的其他活動(dòng)密切相關(guān)。  閱讀全文

          posted @ 2005-12-14 23:05 非魚(yú) 閱讀(1860) | 評(píng)論 (6)編輯 收藏

          僅列出標(biāo)題
          共6頁(yè): 上一頁(yè) 1 2 3 4 5 6 下一頁(yè) 
          主站蜘蛛池模板: 玉山县| 正安县| 沙田区| 普宁市| 吉林省| 武强县| 荥阳市| 江安县| 绥中县| 锡林郭勒盟| 望城县| 大渡口区| 工布江达县| 秀山| 阿克苏市| 和田县| 广河县| 永胜县| 东源县| 龙游县| 卓尼县| 张家港市| 阿勒泰市| 崇阳县| 集安市| 巫溪县| 托里县| 邳州市| 河南省| 临高县| 曲阜市| 吴忠市| 原平市| 江西省| 西昌市| 武清区| 泽州县| 大厂| 荣昌县| 神农架林区| 揭东县|