网络编程(二).pdf
《网络编程(二).pdf》由会员分享,可在线阅读,更多相关《网络编程(二).pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、网络编程(二)网络编程(二)窦窦 刚刚d d d 流式流式SocketSocketSocketSocket(TCPTCPTCPTCP)可实现准确通信,但占资源较多,在无需)可实现准确通信,但占资源较多,在无需实时通信的情况下并不恰当。实时通信的情况下并不恰当。数据报数据报SocketSocketSocketSocket(UDP)UDP)UDP)UDP)是无连接服务,数据以独立的包为单位发是无连接服务,数据以独立的包为单位发送,不保证传输顺序、路径和内容的准确性。但由于无需建立和送,不保证传输顺序、路径和内容的准确性。但由于无需建立和拆除连结,直接将信息打包传向指定目标,因此比流拆除连结,直接将
2、信息打包传向指定目标,因此比流SocketSocketSocketSocket简简单、速度快。单、速度快。第第1 1 1 1节节 数据报数据报通信通信TCP SocketTCP SocketTCP SocketTCP SocketserverserverserverserverclientclientclientclientUDP DatagramUDP DatagramUDP DatagramUDP Datagram数据报数据报serverserverserverserverclientclientclientclientUDPUDPUDPUDP在通信实例的两端各建立一个在通信实例的两端各建
3、立一个SocketSocketSocketSocket,但这两个,但这两个SocketSocketSocketSocket之间并没有之间并没有虚拟链路,只是用来发送、接收数据报,并虚拟链路,只是用来发送、接收数据报,并不知道将该数据报发送到哪里不知道将该数据报发送到哪里。数据报的每个数据包都要包含目的地址和端口号,进行寻址。数据报的每个数据包都要包含目的地址和端口号,进行寻址。JavaJavaJavaJava通过两个类实现通过两个类实现UDPUDPUDPUDP协议数据报:协议数据报:D D D DatagramPacketatagramPacketatagramPacketatagramPac
4、ket是数据容器是数据容器。DatagramSocketDatagramSocketDatagramSocketDatagramSocket是用来发送和接是用来发送和接收收DatagramPacketDatagramPacketDatagramPacketDatagramPacket的的工具工具。说明:说明:D D D DatagramPacketatagramPacketatagramPacketatagramPacket(信件):数据包,是(信件):数据包,是UDPUDPUDPUDP下进行传输数下进行传输数据的单位,数据存放在字节数组中。据的单位,数据存放在字节数组中。本类用于打包或拆包。
5、发本类用于打包或拆包。发送时打包:包由送时打包:包由数据数据、接收地址接收地址、端口号端口号组成;接收时拆包:组成;接收时拆包:取出包中的数据、接收地址、端口号。取出包中的数据、接收地址、端口号。D D D DatagramSocketatagramSocketatagramSocketatagramSocket(邮递员):对应(邮递员):对应SocketSocketSocketSocket概念,不可使用概念,不可使用输入输出流。输入输出流。发送时,用发送时,用send()send()send()send()方法发送数据;接收时,用方法发送数据;接收时,用receive()receive()r
6、eceive()receive()方法接收数据。方法接收数据。第第1 1 1 1节节 数据报数据报通信通信 1 1 1 1DatagramPacketDatagramPacketDatagramPacketDatagramPacket类类 DatagramPacketDatagramPacketDatagramPacketDatagramPacket类的构造方法有四种形式:类的构造方法有四种形式:第第2 2 2 2节节 UDP socket UDP socket UDP socket UDP socket public DatagramPacket(byte buf,int offset,in
7、t public DatagramPacket(byte buf,int offset,int public DatagramPacket(byte buf,int offset,int public DatagramPacket(byte buf,int offset,int length)length)length)length);public DatagramPacket(byte buf,int length)public DatagramPacket(byte buf,int length)public DatagramPacket(byte buf,int length)publi
8、c DatagramPacket(byte buf,int length);以以上两种形式用于创建接收数据报的上两种形式用于创建接收数据报的DatagramPacketDatagramPacketDatagramPacketDatagramPacket类对象,参类对象,参数数bufbufbufbuf为接收缓冲区,内容为空。为接收缓冲区,内容为空。lengthlengthlengthlength为准备接收的数据报长度为准备接收的数据报长度,offsetoffsetoffsetoffset为数据在为数据在bufbufbufbuf中存储的起始位置。中存储的起始位置。public DatagramPa
9、cket(byte buf,int offset,int public DatagramPacket(byte buf,int offset,int public DatagramPacket(byte buf,int offset,int public DatagramPacket(byte buf,int offset,int length,InetAddress address,int port);length,InetAddress address,int port);length,InetAddress address,int port);length,InetAddress add
10、ress,int port);public DatagramPacket(byte buf,int public DatagramPacket(byte buf,int public DatagramPacket(byte buf,int public DatagramPacket(byte buf,int length,InetAddress address,int port);length,InetAddress address,int port);length,InetAddress address,int port);length,InetAddress address,int por
11、t);以上两种形式用于发送数据的以上两种形式用于发送数据的DatagramPacketDatagramPacketDatagramPacketDatagramPacket类对象,参数类对象,参数bufbufbufbuf是是发送数据缓冲区,包括了要发送的数据。发送数据缓冲区,包括了要发送的数据。lengthlengthlengthlength参数是发送的字节数参数是发送的字节数,addressaddressaddressaddress参数是接收该数据报的主机地址,参数是接收该数据报的主机地址,portportportport为接收的端口号。为接收的端口号。由于由于UDPUDPUDPUDP是面向非
12、连接的,所以接收者并不知道每个数据报由谁发送过是面向非连接的,所以接收者并不知道每个数据报由谁发送过来,可以调用来,可以调用DatagramPacketDatagramPacketDatagramPacketDatagramPacket的如下方法来获取发送者的信息,以便的如下方法来获取发送者的信息,以便于进行信息反馈:于进行信息反馈:public synchronized InetAddress getAddress()public synchronized InetAddress getAddress()public synchronized InetAddress getAddress()
13、public synchronized InetAddress getAddress():返回收到返回收到的数据报的来源地址或发出的数据报的目的地址;的数据报的来源地址或发出的数据报的目的地址;public synchronized int getPort()public synchronized int getPort()public synchronized int getPort()public synchronized int getPort():返回收到的数据报的来返回收到的数据报的来源端口或发出的数据报的目的端口;源端口或发出的数据报的目的端口;public SocketAddre
14、ss getSocketAddress()public SocketAddress getSocketAddress()public SocketAddress getSocketAddress()public SocketAddress getSocketAddress():获取要将此包发获取要将此包发送到的或发出此数据报的远程主机的送到的或发出此数据报的远程主机的 SocketAddressSocketAddressSocketAddressSocketAddress(通常为(通常为 IP IP IP IP 地址地址 +端口号)。端口号)。public synchronized byte
15、getData()public synchronized byte getData()public synchronized byte getData()public synchronized byte getData():取数据报中的数据;取数据报中的数据;public synchronized int getLength()public synchronized int getLength()public synchronized int getLength()public synchronized int getLength():取数据报的长度。取数据报的长度。第第2 2 2 2节节 U
16、DP socket UDP socket UDP socket UDP socket 相应于上述相应于上述getgetgetget方法,还有一组方法,还有一组setsetsetset方法,分别用来设置地址、端方法,分别用来设置地址、端口、数据、长度:口、数据、长度:public synchronized void setAddress(InetAddress iaddr)public synchronized void setAddress(InetAddress iaddr)p public synchronized void setPort(int port)ublic synchroni
17、zed void setPort(int port)p public synchronized void setData(byte ibuf)ublic synchronized void setData(byte ibuf)p public synchronized void setLength(ilength)ublic synchronized void setLength(ilength)第第2 2 2 2节节 UDP socket UDP socket UDP socket UDP socket 2 2 2 2DatagramSocketDatagramSocketDatagramS
18、ocketDatagramSocket类类 DatagramSocketDatagramSocketDatagramSocketDatagramSocket类是用来发送和接收数据报的类是用来发送和接收数据报的SocketSocketSocketSocket,其构造,其构造方法有三种。方法有三种。public DatagramSocket()throws SocketExceptionpublic DatagramSocket()throws SocketExceptionpublic DatagramSocket()throws SocketExceptionpublic DatagramSo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程
限制150内