so true

          心懷未來,開創(chuàng)未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0

          導航

          <2007年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(8)

          隨筆分類(157)

          隨筆檔案(158)

          牛人博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          UDP通信的一個小例子!

          package com.bacoo.www;

          import java.io.IOException;
          import java.net.*;

          public class UDPServer implements Runnable{

           /**
            * @param args
            */
           
           public UDPServer(){
            new Thread(this).start();
            try{
             DatagramSocket dgs=new DatagramSocket(8765);
             byte [] buf=new byte[1024];
             DatagramPacket dgp=new DatagramPacket(buf,buf.length);
             
             for(int i=0;i<3;i++){
              dgs.receive(dgp);
              System.out.println("The server has received the datagram!");
              dgs.send(dgp);
             }
            }catch(IOException ioe){
             ioe.printStackTrace();
            }
           }
           public static void main(String[] args) {
            // TODO Auto-generated method stub
            new UDPServer();
           }

           public void run() {
            // TODO Auto-generated method stub
            new UDPClient();
           }

          }
          /*
          說明:
          這里要對UDP方式作一個簡要的說明,構成UDP通信機制的主要是兩個類,即DatagramSocket和DatagramPacket,
          主要包括發(fā)送和接收兩個方面的內容,對于發(fā)送方來說,需要:
          (1)建立一個DatagramSocket對象,注意建立的時候不需要指定端口,因為發(fā)送方關注的是發(fā)送成功,而不在乎是從本機的哪個端口發(fā)送出去的,
          而發(fā)送的具體事宜則是由DatagramPacket來完成的,包括對目的地址的指定。
          (2)建立一個DatagramPacket對象,注意要制定目的地址和對應的端口A。
          (3)調用DatagramSocket對象的send函數(shù)發(fā)送,send函數(shù)的參數(shù)就是剛建立的DatagramPacket對象。
          對于接收方來講,需要:
          (1)建立一個DatagramSocket對象,注意要指定端口,因為作為接收方,不在乎接收的東西是從哪里來的,而只是在本機的一個指定端口進行
          接收就ok了,但需要注意這里的端口要與發(fā)送方投遞的端口A一致。
          (2)建立一個DatagramPacket對象,注意不必指定地址和端口,因為這是被動的接收,而在接收過程中,該DatagramPacket對象
          扮演的角色僅僅是一個信息的承載者,也就是把從端口來的信息封存到它里面。
          (3)調用DatagramSocket對象的receive函數(shù)接收,receive函數(shù)的參數(shù)就是剛建立的DatagramPacket對象。

          最后,還有一點需要說明,就是在剛剛指出的接受模式來說,比如說本例中,雖然未給DatagramPacket對象指定地址和端口,但是
          依然可以調用send函數(shù)進行發(fā)送,這是為什么呢?因為它先調用了receive函數(shù),通過調用該函數(shù),可以在接收過程中保存了信息的來源,
          也就是地址和端口,因此下次再用send發(fā)送時,就仍然往這個地址和端口發(fā)送數(shù)據(jù),因此可以發(fā)送成功。
          */

          posted on 2007-12-28 21:12 so true 閱讀(781) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 栖霞市| 嘉兴市| 景东| 临桂县| 元朗区| 县级市| 南涧| 井冈山市| 安福县| 张掖市| 禹城市| 大姚县| 页游| 镇平县| 珠海市| 刚察县| 黄骅市| 灵宝市| 汉川市| 天水市| 阿勒泰市| 平远县| 南昌县| 乌兰察布市| 牡丹江市| 兴和县| 娱乐| 丹棱县| 芜湖市| 泸西县| 安阳市| 临潭县| 方城县| 酒泉市| 北安市| 始兴县| 宁强县| 肇东市| 抚州市| 驻马店市| 瑞丽市|