posts - 37, comments - 8, trackbacks - 0, articles - 0

          java基礎:關于網絡編程

          Posted on 2008-08-04 21:36 夢與橋 閱讀(352) 評論(0)  編輯  收藏 所屬分類: java基礎
          1、InetAddress類
          InetAddress類沒有提供構造函數,只可以調用一些靜態方法來生成。
          2、使用URL方式進行網絡連接:

          import java.io.*;
          import java.net.*;
          public class Test
          {
           public static void main(String args[])
           {
            try
            {
             URL url=new URL("http://www.baidu.com");
             BufferedReader br=new BufferedReader(
              new InputStreamReader(url.openStream()));
             String str;
             while((str=br.readLine())!=null)
             {
              System.out.println(str);
             }

              br.close();
            }
            catch (Exception e)
            {
             e.printStackTrace();
            }
            
           }
          }

          3、基于TCP的socke編程:
                  圖解:

          code:
          服務器端:

          import java.io.*;
          import java.net.*;
          public class xServer
          {
           public static final int PORT=4500;
           public static void main(String args[])throws IOException
           {
            ServerSocket s=new ServerSocket(PORT);
            System.out.println("Begin:"+s);
            try
            {
             Socket socket=s.accept();
             try
             {
              System.out.println("Connection accepted:"+socket);
              BufferedReader in=new BufferedReader(
               new InputStreamReader(socket.getInputStream()));
              PrintWriter out=new PrintWriter(new BufferedWriter(
               new OutputStreamWriter(socket.getOutputStream())),true);
              while(true)
              {
               String st=in.readLine();
               if(st.equals("END"))break;
               System.out.println("Recived:"+st);
               out.println("OK:");
              }
             }
             finally
             {
              System.out.println("closing...");
              socket.close();
             }
            }
            finally
            {
             s.close();
            }
           }

          }

          客戶端:
          import java.io.*;
          import java.net.*;
          public class xClient
          {
           public static void main(String[] args)throws IOException
           {
            InetAddress addr=InetAddress.getByName("localhost");
            System.out.println("addr="+addr);
            Socket socket =new Socket(addr,xServer.PORT);
            try
            {
             System.out.println("socket="+socket);
             BufferedReader in=new BufferedReader(
               new InputStreamReader(socket.getInputStream()));
             PrintWriter out=new PrintWriter(new BufferedWriter(
               new OutputStreamWriter(socket.getOutputStream())),true);
             for(int i=0;i<5;i++)
             {
              out.println(i+"Hello!");
              String st=in.readLine();
              System.out.println(">>"+st);
             }
             out.println("END");
            }
            finally
            {
             System.out.println("closing...");
             socket.close();
            }
           }
          }

          4、基于UDP的Socket編程:
          服務器端:
          import java.io.*;
          import java.lang.*;
          import java.net.*;
          public class UDPServerDemo
          {
           private DatagramSocket skServer;
           private DatagramPacket dpServer;
           private byte rb[];
           private String strReceived;
           public UDPServerDemo()
           {
            Init();
           }
           public void Init()
           {
            try
            {
             skServer=new DatagramSocket(10005);
             System.out.println("服務器已啟動并已處于監聽狀態!");
             rb=new byte[1024];
             dpServer=new DatagramPacket(rb,rb.length);
             strReceived="";
             int i=0;
             while(i==0)
             {
              //System.out.println("i="+i);
              skServer.receive(dpServer);
              i=dpServer.getLength();
              if(i>0)
              {
               strReceived=new String(rb,0,dpServer.getLength());
               System.out.println("[from Client]"+strReceived);i=0;
              }
             }
            }
            catch (Exception e)
            {
             e.printStackTrace();
            }
           }
           public static void main(String args[])
           {
            new UDPServerDemo();
           }
          }

          客戶端;
          import java.io.*;
          import java.lang.*;
          import java.net.*;
          public class UDPClientDemo
          {
           private DatagramSocket dsClient;
           private DatagramPacket dpClient;
           private byte sb[];
           private String strSend;
           public UDPClientDemo()
           {
            Init();
           }
           public void Init()
           {
            try
            {
             dsClient=new DatagramSocket(10002);
             sb=new byte[1024];
             strSend="使用UDP方式發送的數據";
             sb=strSend.getBytes();
             dpClient=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005);
             System.out.println("開始發送數據...");
             dsClient.send(dpClient);
             System.out.println("數據發送完畢!");
            }
            catch (SocketException se)
            {
             se.printStackTrace();
            }
            catch (IOException ie)
            {
             ie.printStackTrace();
            }
           }
           public static void main(String args[])
           {
            new UDPClientDemo();
           }
          }
          主站蜘蛛池模板: 海原县| 和田县| 微博| 额尔古纳市| 柳江县| 宁陕县| 泌阳县| 奇台县| 安庆市| 沈阳市| 南靖县| 边坝县| 巍山| 辰溪县| 红安县| 四川省| 大埔县| 汉寿县| 延吉市| 屏南县| 微博| 赫章县| 宜州市| 新沂市| 乌什县| 贡觉县| 新邵县| 枝江市| 天峻县| 白河县| 长宁区| 通海县| 南康市| 中西区| 顺昌县| 贵港市| 威远县| 教育| 肃宁县| 武安市| 临漳县|