网络编程UDP与TCP(基础知识,日后补充)

UDP:用户数据报协议

                 特点:面向无连接,数据是不安全,不完整

                           优点:效率高

                           比如:发短信,供屏软件,QQ视频

 

 TCP:传输控制协议

                 特点:面向有连接,数据是安全,完整性

                           比如:打电话,上网

                 TCP协议建立连接 有三个步骤 我们称为"三次握手"

 

UDP 发送方步骤

         //1.创建DatagramSocket对象

                   DatagramSocketds = new DatagramSocket();

                   //2.创建DatagramPacket对象

                   //存储 发送的数据,对方的IP,端口号

                   byte[]bs = "我爱你".getBytes();

                   //IP地址:127.0.0.1  代表本机,本地回环地址

                   DatagramPacketdp = new DatagramPacket(bs,bs.length,InetAddress.getByName("127.0.0.1"),12345);

                   //3.发送

                   ds.send(dp);

                   System.out.println("发送数据成功!!!");//192.168.146.72

                   //4.关闭资源

                   ds.close();

 

UDP 接收方步骤

         //1.创建DatagramSocket对象,

                   //强调:接收端必须指定一个端口号

                   DatagramSocketds = new DatagramSocket(12345);

                   //2.直接创建一个DatagramPacket对象

                   byte[]bs = new byte[1024];

                   DatagramPacketdp = new DatagramPacket(bs, bs.length);

                   //3.接收

                   System.out.println("等待发送端发送数据....");

                   ds.receive(dp);//这个方法具有等待功能,等待发送端发送过来的数据

                   System.out.println("接收数据成功!!");

                   //获取发送端的地址

                   InetAddresssendAddress = dp.getAddress();

                   System.out.println("发送端是:"+sendAddress.getHostAddress());

                   //获取真正的数据

                   byte[]data = dp.getData();

                   //获取发送端 发来了多少字节

                   intlen = dp.getLength();

                   //打印数据

                   StringreceiveMsg = new String(data, 0, len);

                   System.out.println("发送端说:"+receiveMsg);;

                   //4.关闭资源

                   ds.close();

 

TCP 客户端步骤

          // 1.创建一个客户端对象(注意:指定这个Socket要连接的服务器的IP和端口)

                   /*

                    * 这个构造方法干了很多事情:

                    * a.自动去连接服务器

                    * b.自动进行三次握手,建立连接

                    * c.自动为连接中创建两个流

                    */

                   Socketclient = new Socket("127.0.0.1", 12345);

                    

                    // 2.从客户端对象中获取 输出流:getOutputStream()

                   //OutputStreamout = client.getOutputStream();

                    // 3.调用输出流的Write方法写数据到服务器即可

                   //out.write("Howare you".getBytes());

                   client.getOutputStream().write("Howare you".getBytes());

                   System.out.println("给服务器发送数据成功!!");

                    //  4.关闭资源

                   client.close();

         }

TCP 服务器端步骤

//1.创建一个ServerSocket对象,必须绑定一个端口,这个端口必须和客户端连接的端口一致

                   ServerSocketserver = new ServerSocket(12345);

                   //2.获取到 哪一个 客户端连接的我

                   System.out.println("等待客户端连接...");

                   Socketclient = server.accept();//此方法也具有等待功能,等待某一个客户端连接

                   //打印一些和客户端有关信息

                   Stringip = client.getInetAddress().getHostAddress();

                   System.out.println("小样,抓到你了:"+ip);

                   //3.获取输入流,实际上是客户端写数据时的输出流

                   InputStreamin = client.getInputStream();

                   //4.读取数据

                   byte[]bs = new byte[1024];

                   intlen = in.read(bs);

                   //打印

                   System.out.println("客户端说:"+newString(bs,0,len));

                   //5.关闭资源

                   server.close();

                   client.close();

                   in.close();

                   

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值