黑马程序员_网络编程

---------------------- android培训java培训、期待与您交流! ----------------------

1.在TCP/IP协议栈中,有两个高级协议是网络应用程序编写者应该了解的,他们是TCP:传输控制协议和UDP:用户数据报协议。
(1)TCP:需要建立连接。通过三次握手完成连接, 在连接中进行大数据量的传输,是可靠协议,但是效率低。
(2)UDP:将数据及源和目的封装成数据包中,不需要建立连接,速度快,每个数据报的大小在限制在64K内。因无连接,是不可靠协议。
2.Socket
(1)Socket就是为网络服务提供的一种机制。
(2)通信的两端都有Socket。
(3)网络通信其实是Socket间的通信。
(4)数据在连个Socket间通过IO传输。
3.UDP
DatagramSocket类:
 
构造函数 :public DatagramSocket()   如果UDP不用事先接收对方发送的数据而是主动先给对方发送数据  系统会自动分配未被使用的端口号
public DatagramSocket(int port)  UDP有可能要先接收对方发来的数据
public DatagramSocket(int port,InetAddress laddr)  明确指定程序发送和接收数据的IP地址
 
close() 方法 释放系统为DatagramSocket对象所保留的资源
send(DatagramPacket p)
receive(DatagramPacket p)
 
DatagramPacket类构造函数:
Public DatagramPacket(byte[] buf,int length) 接收
Public DatagramPacket(byte[] buf,int length,InetAddress address,int port) 发送
 下面为例子:
 class UdpSend
 {
    public static void main(String[] args) throws Exception
    {
     DatagramSocket ds=new DatagramSocket();//创建udp服务,通过DatagramSocket对象。
     //确定数据,并封装成数据包。
     byte[] buf="udp ni hao".getBytes();
     DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByname("192.168.1.254"),10000);
     ds.send(dp);//通过Socket服务,将已有的数据包发送出去,通过send方法。
     ds.close();//关闭资源。
    }
  }
  class UdpRece
  {
   public static void main(String[] args) throws Exception
   {
     //1.创建udp socket,建立端点。
     DatagramSocket ds=new DatagramSocket(10000);
     //2.定义数据包,用于存储数据。
     byte[] buf=new byte[1024];
     DatagramPacket dp=new DatagramPacket(buf,buf.length);
     //3.通过服务的receive方法将收到数据存入数据包中。
     ds.receive(dp);
     //4.通过数据包的方法获取其中的数据。
     String ip=dp.geetAddress().getHostAddress();
     String data=new String(dp.getData(),0,dp.getLength());
     int port=dp.getPort();
     System.out.println(ip+"~~~"+data+"~~~"+port);
     //5.关闭资源 
     ds.close();
   }
  }

 ---------------------- android培训java培训、期待与您交流! ---------------------- 详细请查看:http://edu.csdn.net/heima

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值