zoukankan      html  css  js  c++  java
  • Java中的网络编程

     Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的

      C/S程序应用:客户/服务器模式,如QQ客户端,客户端连到服务器上,一个C/S模式的应用必须有两套程序,一个是客户端的程序,一个是服务器程序。

      B/S程序应用:浏览器/服务器模式,如当下的各种网站都是B/S模式,所有的程序代码都在服务器上,用户通过浏览器去访问。

    C/S程序分为两种:

            基于TCP协议:Socket(套接字), 可靠的编程: A->B 如打电话先建立连接

            基于UDP协议:不可靠,如短信功能。

    如果编写一个TCP程序需要JAVA的两个包支持:

            java.net.*: 主要提供网络支持;

                    |-ServerSocket类:服务器端程序

                    |-Socket类:客户端程序

            java,io.*:传递信息流

    客户端的两个功能:

        1.建立Socket

        2.接收输入的命令(输入流)->网络上传输的程序考的是字节流

    以下是服务器端,客户端的两个事例程序,服务器端想客户端输出Hello word, 客户端接收并显示;

    服务器程序:

    复制代码
     1 import java.io.*;
     2 import java.net.*;
     3 public class TCPSever {
     4  
     5     /**
     6      * @param args
     7      * @throws IOException
     8      */
     9     public static void main(String[] args) throws IOException {
    10         // TODO Auto-generated method stub
    11         //使用ServerSocket
    12         ServerSocket server = new ServerSocket(8000);
    13  
    14         //每个用户在程序中就是一个Socket
    15         Socket client = null;
    16  
    17         //等待客户端连接
    18         client = server.accept();
    19  
    20         //像客户端打印信息
    21         PrintWriter out = null;
    22  
    23         //准被向客户端打印信息
    24         out = new PrintWriter(client.getOutputStream());
    25         out.println("Hello World");
    26         out.close();
    27         client.close();
    28         server.close();
    29     }
    30  
    31 }
    复制代码

                

    客户端程序: 

    复制代码
     1 package Client;
     2 import java.io.*;
     3 import java.net.*;
     4  
     5 public class TCPClient {
     6  
     7     /**
     8      * @param args
     9      * @throws IOException
    10      * @throws UnknownHostException
    11      */
    12     public static void main(String[] args) throws UnknownHostException, IOException {
    13         // TODO Auto-generated method stub
    14         //表示一个客户端的Socket
    15         Socket client = null;
    16  
    17         //表示一个客户端的输入信息
    18         BufferedReader  buf = null;
    19         client = new Socket("localhost",8000);
    20         buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
    21         System.out.println(buf.readLine());
    22         buf.close();
    23         client.close();
    24  
    25     }
    26  
    27 }
    复制代码

      

    在JDK中也准备了两个专门用于实现UDP的类

            1.DatagramScoket

            2.DatagramPacket

    服务器端程序:

    复制代码
    package Client;
    import java.io.*;
    import java.net.*;
     
    public class TCPClient {
     
        /**
         * @param args
         * @throws IOException
         * @throws UnknownHostException
         */
        public static void main(String[] args) throws UnknownHostException, IOException {
            // TODO Auto-generated method stub
            //表示一个客户端的Socket
            Socket client = null;
     
            //表示一个客户端的输入信息
            BufferedReader  buf = null;
            client = new Socket("localhost",8000);
            buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
            System.out.println(buf.readLine());
            buf.close();
            client.close();
     
        }
     
    }
    复制代码


      客户端程序: 

    复制代码
     1 package Test4;
     2 import java.io.*;
     3 import java.net.*;
     4 public class UDPClient {
     5  
     6     /**
     7      * @param args
     8      * @throws IOException
     9      */
    10     public static void main(String[] args) throws IOException {
    11         // TODO Auto-generated method stub
    12         DatagramSocket ds = null;
    13         DatagramPacket dp = null;
    14  
    15         byte[] b = new byte[1024];
    16  
    17         ds = new DatagramSocket(8000);
    18         dp = new DatagramPacket(b,b.length);
    19         ds.receive(dp);
    20         String str = new String(dp.getData(),0,dp.getLength());
    21         System.out.println(str);
    22     }
    23  
    24 }
  • 相关阅读:
    Android 源代码解析 之 setContentView
    poj 2484 A Funny Game
    BlueDroid代码分析之GKI
    Chromium多线程模型设计和实现分析
    关于template 的23个问题
    Struts2 动态结果集
    沁园春·咏史
    android中常见的内存泄漏和解决的方法
    Spring整合freemarker发送邮件
    [struts2学习笔记] 第三节 创建struts 2 HelloWorld所需的六个步骤
  • 原文地址:https://www.cnblogs.com/zhangkeyu/p/6659366.html
Copyright © 2011-2022 走看看