Java网络编程(二)

上传人:xx****x 文档编号:243023432 上传时间:2024-09-14 格式:PPT 页数:12 大小:144.50KB
返回 下载 相关 举报
Java网络编程(二)_第1页
第1页 / 共12页
Java网络编程(二)_第2页
第2页 / 共12页
Java网络编程(二)_第3页
第3页 / 共12页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Java网络编程(二),1,数据报通信(UDP),UDP协议是无连接的协议,它以,数据报,作为数据传输的载体。数据报是一个在网络上发送的独立信息,它的到达、到达时间以及内容本身等都不能得到保证。数据报的大小是受限制的,每个数据报的大小限定在,64KB,以内。,UDP协议,无需在发送方和接收方建立连接,,但也可以先建立连接。数据报在网上可以以任何可能的路径传往目的地。,在Java中,基于UDP协议实现网络通信的类有三个:,用于表达通信数据的数据报类DatagramPacket,用于进行端到端通信的类DatagramSocket,用于广播通信的类MulticastSocket。,2,点到点通信:类DatagramSocket,构造方法,public DatagramSocket(),public DatagramSocket(,int,port) /在指定的端口通信,public DatagramSocket(,int,port, InetAddressladdr) /在指定的地点运行,这三个方法都将抛出例外SocketException,程序中需要捕获处理。,最主要的方法发送与接收数据报,public void receive(,DatagramPacket,p),public void send(,DatagramPacket,p),这两个方法都将抛出例外IOException,程序中需要捕获处理。,其他方法,public void connect(InetAddressaddress, intport) /与指定的机器通信,有连接,public void disconnect() /关闭与指定机器的连接,public void close() /关闭Socket,3,点到点通信,发送端(服务器端),发出数据报的标准步骤:,1. 定义数据成员,DatagramSocket socket;,DatagramPacket packet;,InetAddress address;(用来存放接收方的地址),int port; (用来存放接收方的端口号),2. 创建数据报Socket对象,try,socket = new DatagramSocket(2876);,catch(.SocketException e) ,socket 绑定到一个本地的可用端口,等待接收客户端的请求,。,4,数据报:类DatagramPacket,构造方法,public DatagramPacket(bytebuf, intlength),public DatagramPacket(bytebuf, intoffset, intlength),/这两个方法用于描述接收数据报,public DatagramPacket(bytebuf, intlength, InetAddress address, intport),public DatagramPacket(bytebuf, intoffset, intlength, InetAddressaddress, intport),/这两个方法用于发送数据报,获取数据获取,接收数据报,中的信息,public InetAddress getAddress(),public byte getData(),public int getLength(),public int getOffset(),public int getPort(),设置数据设置,发送数据报,中的信息,setAddress(InetAddressiaddr)、setPort(intiport)、setData(bytebuf)、setData(bytebuf, intoffset, intlength) 、setLength(intlength),5,点到点通信,3.分配并填写数据缓冲区(一个字节类型的数组),byte buf = new byte256;,存放从客户端接收的请求信息。,4.创建一个,接收数据报,DatagramPacket,packet = new DatagramPacket(buf, 256);,用来从socket接收数据,它只需要两个参数,5. 服务器阻塞(等待接收数据),socket.receive(packet);,在客户的请求数据报到来之前一直等待。,6,点到点通信,从到来的,接收数据报,中得到客户端的地址和端口号,InetAddress address = packet.getAddress();,int port = packet.getPort();,7. 准备需要发送的数据:将数据送入缓冲区buf,或来自文件、或键盘输入,8. 建立,发送数据报,,用来从socket向客户端发送信息,packet = new DatagramPacket(buf, buf.length, address, port);,9. 发送数据包,socket.send(packet);,10.关闭socket,socket.close();,7,点到点通信,接收端(客户端),接收数据报的标准步骤:,1. 定义数据成员,int port;,InetAddress address;,DatagramSocket socket;,DatagramPacket packet;,byte sendBuf = new byte256;,2. 建立socket,socket = new DatagramSocket();,无须指定端口号,它会自动获得一个可用的端口号。,8,点到点通信,3. 向服务器端发出请求数据报(,发送数据报,),address = InetAddress.getByName(“localhost”);,port = 2876;,/获得服务器端的IP和端口号,packet = new DatagramPacket(sendBuf, 256, address, port);,socket.send(packet);,这个数据报本身会带有客户端的信息,4. 客户端等待服务器端的应答(通过,接收数据报,接收数据),packet=new DatagramPacket(sendBuf, 256);,socket.receive(packet);,如果没有到就一直等待,因此实用程序要设置等待时间限度,5. 处理接收到的数据,String received=new String(packet.getData(), 0);,System.out.println(received);,multicast,9,广播通信,DatagramSocket只允许数据报发往一个目的地址。类包中提供了类MulticastSocket,允许将数据报以广播的方式发送到某个端口的所有客户。,类MulticastSocket是在客户端(接收端)使用,监听服务器端广播来的数据;而服务器端仍然使用DatagramSocket来发送数据,只是发送的数据报的目的地址有所变化。,10,广播通信,类MulticastSocket:从DatagramSocket继承而来,构造方法,public MulticastSocket(),public MulticastSocket(intport) :在指定的端口通信,这两个方法都将抛出例外IOException,程序中需要捕获处理。,主要方法,public void joinGroup(InetAddressmcastaddr):加入一个广播组,public void leaveGroup(InetAddressmcastaddr):离开一个广播组,public void setTimeToLive(intttl):指定数据报离开时间,public void send(DatagramPacketp, bytettl):在指定的时间内将数据报发送出去,这四个方法都将抛出例外IOException,程序中需要捕获处理。,继承DatagramSocket的方法,public void receive(DatagramPacketp):接收数据,public void send(DatagramPacketp):发送数据,public void connect(InetAddressaddress, intport):与指定的机器通信,public void disconnect():关闭指定的连接,public void close():关闭Socket,11,广播通信,MulticastSocket socket = new MulticastSocket(4446);,InetAddress group = InetAddress.getByName,(“224.0.0.1);,socket.joinGroup(group);, /receive datagram,socket.leaveGroup(group);,socket.close();,InetAddress group = InetAddress.getByName(,“,224.0.0.1,);,DatagramPacket packet =,new DatagramPacket(buf, buf.length, group, 4446);,socket.send(packet);,客户端,服务器端,12,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!