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

          java基礎:關于網絡編程

          Posted on 2008-08-04 21:36 夢與橋 閱讀(349) 評論(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();
           }
          }
          主站蜘蛛池模板: 江永县| 乐东| 来宾市| 宝山区| 永济市| 庆城县| 嘉祥县| 麻江县| 家居| 青龙| 台南县| 霸州市| 山西省| 沁水县| 灯塔市| 庆安县| 上犹县| 岳西县| 娱乐| 青海省| 喜德县| 商丘市| 金湖县| 桃园市| 宁陕县| 徐州市| 陇西县| 辽阳市| 宝鸡市| 乾安县| 龙川县| 保德县| 丹阳市| 郯城县| 石河子市| 克山县| 福建省| 都昌县| 枣阳市| 邹平县| 安义县|