黑马程序员_网络编程

---------------------- 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培训、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值