黑马程序员_网络编程

来源:互联网 发布:网络出租屋怎么赚钱的 编辑:程序博客网 时间:2024/05/21 11:52
---------------------- android培训、java培训、期待与您交流! ----------------------

一、UDP与TCP区别
 
    TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
    UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快
 
二、UDP编程
    客户端
        从键盘录入内容,发往服务器端
    public static void main(String []args) throws Exception{
        DatagramSocket ds = new DatagramSocket();
        BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
        String line = null;
        while((line=bfr.readLine())!=null){
            if("886".equals(line)){
                break;
            }
            byte[] by = line.getBytes();
            DatagramPacket dp = new DatagramPacket(by,by.length,InetAddress.getByName("127.0.0.1"),10001);
            ds.send(dp);
        } 
        ds.close();
    }
    服务器端
    public static void main(String []args)throws Exception{
        DatagramSocket ds = new DatagramSocket(10001);
        while(true){
            byte[] by = new byte[1024];
            DatagramPacket dp = new DatagramPacket(by,by.length);
            ds.receive(dp);
            String data = new String(dp.getData(),0,dp.getLength());
            System.out.println(data);
        }       
        ds.close(); 
    }
三、TCP编程
 
    客户端
         public static void main(String[] args) {
                   Socket socket = null;
                   InputStream is = null;
                   OutputStream os = null;
                   String serverIP = "127.0.0.1";//服务器端IP地址
                   int port = 10000; //服务器端端口号
                   String data = "Hello";//发送内容
                    try {
                           socket = new Socket(serverIP,port); //建立连接
                            os = socket.getOutputStream();//发送数据
                            os.write(data.getBytes());
                            is = socket.getInputStream(); //接收数据
                            byte[] b = new byte[1024];
                            int n = is.read(b);
                           System.out.println("服务器反馈:" + new String(b,0,n));//输出反馈数据
                   } catch (Exception e) {
                            e.printStackTrace(); //打印异常信息
                   }finally{
                            try {
                                     //关闭流和连接
                                     is.close();
                                     os.close();
                                     socket.close();
                            } catch (Exception e2) {}
                   }
         }
 
服务器端
         public static void main(String[] args) {
                   ServerSocket serverSocket = null;
                   Socket socket = null;
                   OutputStream os = null;
                   InputStream is = null;
                    int port = 10000; //监听端口号
                   try {
                              serverSocket = new ServerSocket(port);//建立连接
                             socket = serverSocket.accept(); //获得连接
                              is = socket.getInputStream(); //接收客户端发送内容
                            byte[] b = new byte[1024];
                            int n = is.read(b);
                            //输出
                            System.out.println("客户端发送内容为:" + new String(b,0,n));
                            //向客户端发送反馈内容
                            os = socket.getOutputStream();
                            os.write(b, 0, n);
                   } catch (Exception e) {
                            e.printStackTrace();
                   }finally{
                            try{
                                     //关闭流和连接
                                     os.close();
                                     is.close();
                                     socket.close();
                                     serverSocket.close();
                            }catch(Exception e){}
                   }
         }
---------------------- android培训、java培训、期待与您交流! ----------------------