其中有些限制比现实更常出现. 数据报模型非常适合这样的应用程序 : (a) 请求 - 回复的交易 (FIXME:Transactions are request-reply). (b) 负载比较小. (c) 服务器是无连接的. (d) 事务是幂等的 (FIXME:Transactions are i

Size: px
Start display at page:

Download "其中有些限制比现实更常出现. 数据报模型非常适合这样的应用程序 : (a) 请求 - 回复的交易 (FIXME:Transactions are request-reply). (b) 负载比较小. (c) 服务器是无连接的. (d) 事务是幂等的 (FIXME:Transactions are i"

Transcription

1 这章介绍 UDP, 用户数据报协议, 和它在 Java 中的实现 DatagramSocket 和 DatagramPacket. 在这章我们 只关注阻塞模式的点对点或者 " 单播 "UDP.UDP 通道 I/O 和非阻塞模式在第 10 章组播 (MulticaseSocket) 中讨论, 广播在第 11 章讨论. 9.1 概览 在这节我们简要浏览基本的单播 UDP 和如何在 Java 中编程. UDP 是指定在 RFC 768 中修订的 UDP 中的套接字 如我们在 节看到的, 一个套接字是一个通信端点的抽象表示, 与本机的一个 IP 地址和端口关联. 在 UDP 套接字和 TCP 套接字之间有重大 (significant) 的区别 : (a) UDP 套接字没有实现可靠的数据流. 它们实现了不可靠的数据报, 如在 节讨论的. (b) UDP 只有 " 主动的 " 套接字, 与 TCP 对比,TCP 有 " 主动的 " 和 " 被动的 " 套接字. (c) UDP 没有如 TCP 中的明确的 "accept" 阶段 (*). (d) UDP 套接字没有明确的通过网络操作同时连接或者断开 (FIXME:UDP sockets are not explicitly connected together or disconnected by network operations-together 出现在这里有点让人不太明白 ). (e) UDP 套接字在 Java 中由 DatagramSocket 类型的对象表示. UDP 套接字和 TCP 套接字占据不同的 " 名称空间 ": 一个 TCP 套接字和一个 UDP 套接字总是有区别的, 即使他们有相同的地址和端口.UDP 套接字和 TCP 套接字不能交互连接. * 如 节中讨论的, 为了避免某些 Java 和内核的开销. 一个发送者在做大量的发送之前可能会 ' 连接 ' 到远程地址和端口. 这是一个本地操作, 不是网络操作 : 远程端不知道这个操作和任何的通信断开连接操作 数据报 ' 数据报 ' 是一个单一的传输, 可能传递 0 次或多次. 在同样的两个端点之间相对于 (with respect to) 其它的数据报它的顺序是不能保证的.(FIXME:Its sequencing with respect to other datagrams between the same two endpoints is not guaranteed) 换句话说, 它可能是无序传递的, 或根本没有, 或多次. 数据报在一个单一的 IP 数据包中发送. 不像 TCP 流, 数据报受限于 (subject to) 于大小的约束. (a) IPv4 协议限制它们为 字节, 大部分实现限制它们为 8KB, 尽管在一些实现中可以通过增加套接字的发送和接收缓冲区大小增加提高这个, 如 9.11 节描述的. (b) IPv4 路由器有权 (entitle) 去分段任何的 IP 数据包, 包括 TCP 分段和 UDP 数据报. 不像 TCP 分段, 然而,UDP 数据报一旦被分段永远不会重新组装 (reassemble), 所以实际上被废弃了.IPv4 UDP 的实际开发通常限制消息为 521 字节 - 单个 IP 数据包 - 为了避免分段问题 (*). (c) IPv6 在 IP 层级上有 "jumbograms"(fixme:jumbograms 查不出来是啥意思 ); 这个允许 UDP 数据报达到 2-1 字节 ; 见 RFC 然而,RFC 接着说到 (FIXME:Jumbograms are relevant only to IPv6 nodes that may be attached to links with a link MTU greater than 65,575 octets, and need not be implemented or understood by IPv6 nodes that do not support attachment to links with such large MTUs. In other words, jumbograms can only be expected to be communicable among hosts which are all connected to such links.) 如果一个数据报完全传递, 它完整的达到, 也就是说, 没有传输错误, 丢弃和在字节中没有内部的顺序错误. 然而, 如果接收到的数据报大于可用空间, 超过的数据安静的被忽略. * UDP 的好处 (a) 由于协议是无连接的, 连接或断开连接不需要网络开销 (overhead). 作为对比, 我们已经在 节看到 TCP 需要三方数据包交换去建立连接, 断开它需要四方数据包交换. (b) UDP 服务器的架构比 TCP 服务器的架构更加简单, 没有连接的套接字去接收和关闭. (c) 类似的,UDP 客户端的架构也比 TCP 客户端简单, 无需连接去创建或终止 UDP 的限制 (a) 不支持重新组装分段的数据报. (b) 在实践中负载是非常有限的. 数据报负载超过 512 字节会被路由器恰当的 (apt) 的分段, 因此实际上会丢失 (FIXME:therefore effectively lost). (c) 不支持根据一般的网络条件 (FIXME: pacing transmissions) (d) 不支持数据包排序. (e) 不探测数据包丢失和重新传输.

2 其中有些限制比现实更常出现. 数据报模型非常适合这样的应用程序 : (a) 请求 - 回复的交易 (FIXME:Transactions are request-reply). (b) 负载比较小. (c) 服务器是无连接的. (d) 事务是幂等的 (FIXME:Transactions are idempotent). 也就是说, 可以重复而不会影响全部 (overall) 的计算结果 (*). 数据报模型比 TCP 的流模型更加接近于实际的底层网络 : 包被交换, 重新排序和丢失. 数据报模型也比 TCP 流 模型更加接近于许多应用程序的上层实现 (overlying realities). 本质上, 数据报自然地提供了在 " 最后一 个 0" 的传递保证. 这个使得客户端看到发送的请求相当简单 : 可以是传输已经接收到和确认, 或者它被重新传输. xxxxxxx 总结,UDP 支持不可靠, 无连接, 大小限制的数据报通信在点对点架构中. 每个端点创建一个数据报套接字. 为 了接收数据,UDP 套接字必须绑定到一个端口. 为了发送数据, 一个数据报的数据包形成, 通过一个数据报套接字发送到一个远程的 IP 地址和端口. 尽管 UDP 是一个点对点的协议, 在许多实际的应用程序中, 我们可以仍然区分作为客户端的发送请求的请求端点和等待回复, 和作为服务器等待一个请求的响应端点和发送一个回复. * 导入语句下面的 Java 导入语句假设在这章的示例中至始至终存在. import java.io.*; import java.net.*; import java.util.*; 9.2 简单的 UDP 服务器和客户端 在 Java 中, 一个 UDP 套接字由 java.net.datagramsocket 类型的对象表示 ; 一个 UDP 数据包由 java.net.datagrampacket 类型的对象表示 简单的 简单的 UDP 服务器最简单的可行的 UDP 服务器在 Example 9.1 中展示. public class UDPServer implements Runnable { DatagramSocket socket; public UDPServer(int port) throws IOException { this.socket = new public void run() { for (;;) { try { byte[] buffer = new byte[8192]; DatagramPacket packet= new DatagramPacket(buffer, buffer.length); socket.receive(packet); new ConnectionHandler(socket, packet).run(); // 这里只是普通的方法调用, 并没有启动线程. catch (IOException e) { // // for (;;) // run() // class Example 9.1 Simple UDP server 这个的连接处理类和随后的服务在 Example 9.2 中展示. class ConnectionHandler implements Runnable { DatagramSocket socket; DatagramPacket packet; ConnectionHandler(DatagramSocket socket, DatagramPacket packet) { this.socket = socket;

3 this.packet = public void run() { handlepacket(socket, packet); public void handlepacket(datagramsocket socket, DatagramPacket packet) { try { byte[] buffer = packet.getdata(); int offset = packet.getoffset(); int length = packet.getlength(); // conversation not shown // sets reply into buffer/offset/length packet.setdata(buffer, offset, length); // write reply to the output socket.send(packet); catch (IOException e) { /*... */ // handlepacket() // class Example 9.2 UDP server connection handler Example 9.1 是单线程设计的通常不怎么适用, 由于它是顺序的处理客户端, 不是并发的 - 一个新的客户端阻塞当之前的客户端在服务中. 为了处理客户端并发, 服务器必须使用为接收的连接使用一个不同的线程. 这样的 UDP 服务器的最简单的的形式, 使用了相同的连接处理类, 在 Example 9.3 中描述. public class ConcurrentUDPServer extends UDPServer { public ConcurrentUDPServer(int port) throws IOException { public void run() { for (;;) { try { byte[] buffer= new byte[8192]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); socket.receive(packet); new Thread(new ConnectionHandler(socket, packet)).start(); // 启动一个新的线程 catch (IOException e) { // // for (;;) // run() // class Example 9.3 Simple UDP server multithreaded 连接处理类简化了回复它的输入到它的输出 - 对于测试非常有用 - 在示例 9.4 展示. class EchoConnectionHandler implements Runnable { DatagramSocket socket; DatagramPacket packet; ConnectionHandler(DatagramSocket socket, DatagramPacket packet) { this.socket = socket; this.packet = public void run() { handlepacket(socket, packet); public void handlepacket(datagramsocket socket, DatagramPacket packet) { try { byte[] buffer = packet.getdata(); int offset = packet.getoffset(); int length = packet.getlength(); // The reply is the same as the request, // which is already in buffer/offset/length packet.setdata(buffer, offset, length); // write reply to the output -- 写入回复到输出中 socket.send(packet); catch (IOException e) {

4 // // handlepacket() // class Example 9.4 UDP server connection handler echo service 简单的 UDP 客户端 客户端的 DatagramSocket 通常绑定到系统选择的端口. 一个为之前的 UDP 服务器的简单的 UDP 客户端在 Example 9.5 展示. public class UDPClient implements Runnable { DatagramSocket socket; // socket for communications InetAddress address; // remote host int port; // remote port public UDPClient(InetAddress address, int port) throws IOException { this.socket = new DatagramSocket();// ephemeral port - 临时端口 this.address = address; this.port = port; /** * Send the data in {buffer, offset, length * and overwrite it with the reply. the actual reply length. IOException on any error */ public int sendreceive(byte[] buffer, int offset, int length) throws IOException { try { // Create packet DatagramPacket packet = new DatagramPacket (buffer, offset, length, address, port); socket.send(packet); socket.receive(packet); return packet.getlength(); catch (IOException e) { // // sendreceive() // class Example 9.5 Simple UDP client DatagramPacket 类 如我们在 节所看到的, 一个 UDP 数据报是一个单独的传输单元, 在 Java 中它很方便的作为一个单独的对 象表示. 这个对象是 DatagramPacket.UDP 不是流协议, 所以 TCP 的基于流的编程技术用在 UDP 中不适用. 不像 TCP 套接字, 支持所熟悉的 InputStream 和 OutputStream,UDP 套接字在 Java 中通过发送和接收全部的 DatagramPacket 的方法支持输入和输出 DatagramPacket 构造函数一个 DatagramSocket 通过下面的方法中的一个构造 : class DatagramPacket { DatagramPacket(byte[] data, int length); DatagramPacket(byte[] data, int length, InetAddress address, int port); DatagramPacket(byte[] data, int offset, int length); DatagramPacket(byte[] data, int offset, int length, InetAddress address, int port); DatagramPacket(byte[] data, int length, SocketAddress socketaddress); DatagramPacket(byte[] data, int offset, int length, SocketAddress socketaddress); length 和 offset 是非负数, 下面的等式是适用的 (*): 0 length + offset data.length (EQ 9-1) 注意, 不像 TCP 协议, 在 UDP 中可能发送和接收都是 0 长度的数据报. 这在一个应用程序协议中可能是有用的, 比如,'I'm alive' 消息或者 pings. data,offset,length,address 和端口属性都可以单独设置在构造之后通过相应的 set 方法, 它们也都可以使用相应的 get 方法获取. 这些属性在下面将单独描述. * 这个等式在 Java 中总是适用的当处理字节数组的时候,offset 和 length, 通过任意的构造函数或者方法

5 执行的时候都会执行. 如果违背这个等式将抛出 IllegalArgumentException DatagramPacket data data 在一个 DatagramPacket 被指定为一个字节数组,offset 和 length. 这些可以在构造中一起设置, 也可以随后通过下面的方法设置和获取. class DatagramPacket { byte[] getdata(); void setdata(byte[] data); void setdata(byte[] data, int length); void setdata(byte[] data, int offset, int length); int getlength(); void setlength(int length); int getoffset(); void setoffset(int offset); data,offset 和 length 的默认值分别为 null,0 和 0. 当设置任意的这些属性的时候. 等式 9.1 将强制执行. 当发送一个数据报, 由应用程序决定格式化数据为字节数组. 这样做的一种方式就是 DataOutputStream, 或者 ObjectOutputStream, 结合到 ByteArrayOutputStream. DatagramPacket packet = new DatagramPacket(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); dos.writeint( ); // or as per application protocol dos.flush(); packet.setdata(baos.tobytearray(), baos.size()); 当接收一个数据报,Java 将接收到数据放置到 DatagramPacket 的字节数组中从当前的 offset 属性值开 始, 到 DatagramPacket 的当前的 length 属性的前一个结束. 应用程序必须预分配字节数组, 保证它能对于预 期的数据是充分的. 同时设置适当的 offset 和 length: 字节数字,offset, 和长度必须满足等式 9.1. 通常应用程序将设置 offset 为 0,length 为字节数组的长度在接收到一个 DatagramPacket 之前. Java 调整 DatagramPacket 的 length 属性为接收到的数据的长度如果它小于原始的长度 ; 然而, 如我们在 节所看到的, 超过的数据将被安静的截断, 长度不会受到干扰 : 换句换说, 没有迹象表明 ( 如过度长度 ) 接收数据被截断. 这意味着一个 datagram 的 length 属性在多次接收操作中重用, 但必须在第二次和随后的接收之前重置 ; 否 则, 它不断的 (continually) 缩减 (shrinks) 到目前为止最小的 datagram 的大小. 它也意味着, 应用程序不 能区分一个数据报的精确的最大长度和数据报太大被截断了. 通常处理这个问题的技术就是分配最大的预期的数 据报加 1 个字节的空间. 如果一个数据报的额外的长度接收到了, 这是出乎意料的, 也就是说, 至少一个字节太长 (FIXME:It also means that the application can t distinguish between a datagram which was exactly the maximum length and a datagram which was too big and got truncated. The usual technique for handling this problem is to allocate space for the largest expected datagram plus one byte. If a datagram of this extra length is received, it was unexpectedly large, i.e. at least one byte too long). 由应用程序决定格式化数据为字节数组. 这样做的一种方式就是 DataInputStream, 或者 ObjectInputStream, 结合到 ByteArrayInputStream. DatagramPacket packet; // initialization & receive not shown ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData(), packet.getoffset(), packet.getlength()); DataInputStream dis = new DataInputStream(bais); int i = dis.readint();// or as per application protocol 应该要清楚这个技术是这节之前给出的 ByteArrayOutputputStream 技术的倒转 DatagramPacket 地址和端口 一个 DatagramPacket 关联一个 IP 地址和端口 : 这些代表了来自于哪里的一个绑定的 datagram 的远程的 UDP 套接字. 或者一个未绑定的 datagram 正在被发送. 它们可以通过构造函数或下面的方法设置 : class DatagramPacket { SocketAddress getsocketaddress(); void setsocketaddress(socketaddress address); InetAddress getaddress(); void setaddress(inetaddress address); int getport(); void setport(int port);

6 要记住 JDK 1.4 SocketAddress 代表了一个 {InetAddress, port 对. 当一个数据报被接收,Java 设置它的 {addressm port 到它的数据报的远程源 (FIXME:remote source), 这样你可以知道它从哪里来. 当发送一个数据报, 它的 {address, port 必须已经设置到了数据报将要被发送的目标. 如果数据报启动会 话 (initiates the conversation), 应用程序必须设置自身的 {address, port. 然而, 回复一个刚接收 到的数据报, 它只是简单的重用接收到的数据报 : 使用 DatagramPacket.setData 方法将回复的数据放到数据报中, 保持 {address, port 原样, 而不是构造一个新的 DatagramPacket 和设置它的 {address, port. 这种技术可以节省创建对象, 在请求和回复之间避免易于出错的拷贝 {address, port. 9.3 数据报套接字初始化 构造 DatagramSocket 使用下面的构造函数之一创建. DatagramSocket() throws IOException; DatagramSocket(int port) throws IOException; DatagramSocket(int port, InetAddress localaddress) throws IOException; DatagramSocket(SocketAddress localsocketaddress) throws IOException; 在大多数这样的情况下, 套接字构造已经 ' 绑定 ', 意味着它已经关联了一个本地的 IP 地址和端口. 一个绑定的 套接字可以立即被使用, 用来发送和接收. 然而, 如果构造函数使用一个 null 的 SocketAddress, 套接字是 ' 未 绑定 ' 构造的, 也就是说, 还没有关联一个本地的 IP 地址或者端口. 一个未绑定的套接字可以立即用来发送, 但是接收之前它必须首先使用 DatagramSocket.bind 来 ' 绑定 ', 在 节描述. 首先我们看下构造绑定的套接字的构造的函数 ; 然后我们看下未绑定套接字的方法 端口 UDP 接收端通常指定它们要接收的本地端口, 通过提供一个非 0 的端口到构造函数中或者 bind 方法. 如果端口省略或者为 0, 一个临时 - 系统分配 - 端口将被使用. 可以通过调用下面的方法获得 : int getlocalport(); 临时端口通常被 UDP 客户端使用, 除非他们需要去指定一个特殊的端口去满足本地的网络约束, 比如防火墙策略. 临时端口通常不会被 UDP 服务器使用, 由于一些外部因素通信需要实际的端口到客户端 (FIXME:as otherwise some external means is required of communicating the actual port number to clients); 否则我们不知道如何发送到接收器 : 通常这个功能假设通过命名服务比如一个 LDAP 目录服务. 在 Sun RPC, 假设通过 RPC 端口映射服务 本地地址 一个数据报套接字的本地地址是它接收的 IP 地址. 默认情况下,UDP 套接字在所有的本地 IP 地址上接收. 它们 可以用来在一个单独的本地 IP 地址上接收, 通过提供一个非 null 的 InetAddress 或者带有非 null 的 InetAddress 的 InetSocketAddress, 到一个 DatagramSocket 的构造函数上. 如果 InetAddress 省略或为 null(' 通配符 ' 地址 ), 套接字绑定到所有的本地地址, 意味着它从任意的地址接收. 指定一个本地的 IP 地址只是更有意义, 如果本地主机是多地址的. 也就是说, 有多个 IP 地址, 通常因为它有多 于 1 个的物理网络接口. 在这种的情况下, 一个 UDP 接收器可能只想去通过这些 IP 地址中的 1 个使得自身可用而不是它们中的所有. 查看在 9.12 节的多地址讨论获得更多细节. 一个数据报套接字绑定的 UP 地址通过以下地方方法返回 : InetAddress getinetaddress(); SocketAddress getlocalsocketaddress(); 这些方法返回 null, 如果套接字还没有绑定 重用本地地址 如早 节所描述的在绑定数据报套接字之前, 你可能希望去设置 ' 重用本地地址 ' 选项. 这个实际上意味着重用本地端口. 重用 - 地址方法在 JDK 1.4 中加入 : void setreuseaddress(boolean reuse) throws SocketException; boolean getreuseaddress() throws SocketException;

7 你必须使用这个设置如果你想在相同的端口在多 IP 地址上接收通过绑定多个 DatagramSocket 到相同端口和不同的本地 IP 地址, 要么在相同的 JVM 中或者在相同主机的多个 JVM 中. 在一个数据报套接字绑定, 或者构造除了使用一个 null SocketAddress 后改变这个设置, 不会有效果. 注意这个方法设置和获取一个 boolean 状态, 而不是一些某种形式的地址如它们的名称可能建议的 (FIXME:not some sort of address as their names may suggest.) Bind 操作 一个 DatagramSocket 构造使用一个 null SocketAddress 在构造函数中在 JDK 1.4 中引入必须在数据报可以接受之前绑定 ( 尽管它不需要为数据报被发送而绑定 ). 数据报的绑定由 JDK 1.4 的方法支持. void bind(socketaddress localsocketaddress) throws IOException; boolean isbound(); localsocketaddress 通常是一个使用一个端口的 InetSocketAddress, 如 节所描述的.InetAddress 如 节描述. 套接字要么绑定到一个临时端口, 要么绑定到一个指定的本地端口, 在一个指定的本地 IP 地址或者它们中的所有, 根据 localsocketaddress 参数的值, 如表格 9.1 所示. 表格 9.1 UDP bind 参数 SocketAdddress InetAddres port Bound To null - - 临时端口, 所有的本地 IP 地址 InetSocketAddress null zero 临时端口, 所有的本地 IP 地址 InetSocketAddress null non-zero 指定端口, 所有的本地 IP 地址 InetSocketAddress non-null zero 临时端口, 指定的本地 IP 地址 InetSocketAddress non-null non-zero 指定的端口和本地 IP 地址 如在 节所讨论的, 一个服务器通常应该指定一个特殊的端口 : 客户端可以这样也可以不这样, 主要依赖 于它是否需要因为防火墙 - 穿透 (firewall-traversal) 目的使用一个固定的端口.bind 方法必须在执行通道数据报输入之前被调用, 将在 10.2 节讨论. 多地址的主机在 9.12 节讨论. 一个 DatagramSocket 不能被重新绑定.isBound 方法返回 true 如果套接字已经绑定 设置缓冲区大小在使用一个数据报套接字之前, 它的发送和接收缓冲区大小应该被调整, 如 9.11 节描述的 Connect 操作 一个 DatagramSocket 可以连接到一个远程的 UDP 套接字. 不像 TCP 的连接操作, 一个 UDP ' 连接 ' 只是一个 本地的操作 : 它不影响网络, 因此它不会影响远程端 ; 它仅仅 (conditions) 作为本地端的条件, 这样数据可以 接收或者发送到指定的地址. 如果一个传入的 DatagramPacket 的 {address,port 属性与设置指定到 connect 方法中的不一致, 数据报将被安静地废弃 ; 如果一个输出的 DatagramPakcet 的这些与指定到 connect 方法中的设置不一致,DatagramSocket.send 将抛出 IllegalArgumentException. 数据报套接字的连接通过下面的方法支持 : void connect(inetaddress address, int port); void connect(socketaddress socketaddress) throws SocketException; boolean isconnected(); (a) address 和 port 指定了一个远程 UDP 套接字的 {address, port, 如在 节描述的, 或者 (b) sokcetaddress 通常是一个 InetSocketAddress 使用一个远程 UDP 套接字 {address, port 构造, 如 节所描述的. 由于没有涉及网络协议, 不能保证远程 UDP 端口存在, 即使 connect 方法可能已经成功完成. 因此随后的在一 个连接的 DatagramSocket 上的发送或者接收操作可能抛出 PortUnreachableException. 更坏的是, 发送和接收可能简单的安静失败而不会抛出异常. 实际的行为的发生依赖于平台和 JDK 版本. 连接一个数据报套接字节省 Java 开销 : 它允许连接允许到目标上只在连接的时候被检查, 而不是在每次传输 或者从目标接收. 如果请求的 'connct' 行为的 SocketPermission 没有授予 (granted), 将抛出 SecurityException: 这是一个运行时错误, 编译的时候不会被检查. 在 Berkeley 套接字 API 中, 连接一个数据报套接字也减少了某些内核的开销. 在 JDK 1.4 之前,Java 不是调 用底层的 connect()api, 它只是在 Java 层面模仿它的行为, 这样内核开销不会减少,PortUnreachableException 不是由在一个连接的 DatagramSocket 上的 I/O 操作抛出.

8 isconnect 方法判断本地套接字是否已经连接 : 它不会告诉你关于另一个端点的信息, 包含它是否存在. 一个 DatagramSocket 不能被关闭然后连接或者重新连接, 但是它可以被断开连接如 9.5 节描述, 然后重新连接. 如果你没有 JDK 1.4, 和它的 DatagramSocket.isConnect 方法, 你可以使用下面的方法 : InetAddress getinetaddress(); int getport(); 为了相同的目的. 这些方法返回连接的套接字的远程地址或断开, 或者 null 或者 -1( 视情况而定 ), 如果套接字当前没有连接. 9.4 数据报 I/O 数据报 I/O 通过下面的方法执行 : void send(datagrampacket packet) throws IOException: void receive(datagrampacket packet) throws IOException: 数据报输出 一旦你已经格式化输出数据到一个字节数组中, 然后使用一个来自它的 DatagramPacket 构造, 如 节所 示, 在数据报中设置地址, 如 节所示, 发送谁到目的地只是简单的调用 DatagramSocket.send 方法, 如 下面所示 : // initializations not shown InetAddress address; DatagramPacket packet; int port; byte[] buffer;// see section DatagramSocket socket = new DatagramSocket(); packet.setdata(buffer, length); // pre-jdk 1.4 packet.setaddress(address); packet.setport(port); socket.send(packet); 从 JDK 1.4 开始,setAddress 和 setport 的调用可以单独调用 setsocketaddress 来替代 : // From JDK 1.4 packet.setsocketaddress(new InetSocketAddress(address, port)); DatagramSocket.send 方法不是同步的 : 这就是为什么在 Example 9.2.1( 书中写的是 9.3, 应该是错误的 ) 中所展示的并发的 UDP 服务器不需要第二个 DatagramSocket 去发送回复给传入的数据包. 任何内部的顺序 需要由底层 UDP 实现处理.( 这段说的其实有点让人不是那么理解, 不过可以看下 send() 方法的源实现, 虽然此方法不是同步的, 但是此方法的内部, 其实是做了同步操作的 ) 数据报套接字的异常处理在 9.8 节讨论 数据报输入 接收数据报甚至比发送还简单, 如下面所示 : int port; // initialization not shown DatagramSocket socket = new DatagramSocket(port); // declare array at required length+1 byte[] buffer = new byte[8192+1]; DatagramPacket packet = new DatagramPacket(buffer, buffer.length); socket.receive(packet); 如果数据报在等待,receive 方法阻塞到一个数据报被接收到. 此时 packet.getdata 方法可以获得接收到 的数据,packet.getOffset 为它的偏移位,packet.getLength 为它的总长度, 所以我们可以如下处理 : ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData(), packet.getoffset(),packet.getlength()); // etc as in section 在这种情况下, 我们不用指定 offset 当创建 packet 的时候, 所有我们可以使用简单的形式 :

9 new ByteArrayInputStream(packet.getData(), packet.getlength()); // 尽管实际的编程中不应该像这样假设 offset 为 0. 如果我们想去回复这个数据报, 我们在 看到过, 一个接受的数据报已经包含了发送者的地址和端口, 所以我们所要做的就是设置回复的数据然后调用如 节描述的 DatagrmSocket.send. DatagramSocket.receive 方法不是同步的. 默认的数据报套接字实现类 ( 在 9.6 节讨论 ) 的 receive 方法是同步的. 从多线程中在同一个数据报套接字上并发接收是由 Java 进行顺序化的. 9.5 终止 在 UDP 中没有明确的断开连接协议, 所以当一个会话由一个特定的端点结束, 不需要特别的动作. 连接的套接字数据报可以被断开, 如果需要的话可以在未连接或者连接的模式中重用 (FIXME:re-used in either unconnected or connected mode if required). 数据报套接字比粗在使用后关闭 断开连接 如果一个数据报套接字已经连接了, 它可以使用下面的方法断开 : void disconnect(); 这个方法什么都不做如果套接字没有连接. 如果一个数据报套接字用在了连接模式中, 它通常应该在一个会话的一开始就连接, 在会话结束的时候断开 关闭 当你用完了一个 DatagramSocket, 你必须关闭它 : void close() throws IOException; boolean isclosed(); isclosed 犯法判断本地套接字是否已经关闭. 它不会告诉你任何关于连接的信息,(FIXME: for the very good reason that in UDP there is no connection in the network sense). 在关闭后, 套接字不能再用来做任何事 (FIXME:the socket is no longer usable for any purpose). 9.6 套接字工厂 如我们在 节所看到的,java.net 套接字工厂由 Java 使用用来去提供它自身的套接字实现. java.net.datagramsocket 类实际上是表面的. 它定义了 Java 套接字 API, 但是代理了它 ( 做所有的实际的工作 ) 的所有的动作到套接字实现对象, 数据报套接字实现继承了抽象 java.net.datagramsocketimpl 类 : class DatagramSocketImpl { // 工厂提供了 DatagramSocketImpl 类型的对象, 实现了 java.net.datagramsocketimpfactory 接口 : interface DatagramSocketImplFactory { DatagramSocketImpl createdatagramsocketimpl(); 一个默认的套接字工厂总是被设置的, 产生包保护的 java.net.plaindatagramsocketimpl 类的对象. 这个类有本地的方法, 与本地的 C- 语言套接字 API 交互. 比如,Berkeley 套接字 API 或者 Win sock. 套接字工厂可以这样设置 : static void setdatagramsocketimplfactory(datagramsocketimplfactory factory);

10 setdatagramsocketimplfactory( 书中写的是 setsocketfactory, 是简写还是写错了?) 方法在 JVM 的生命周期中只能被调用一次. 它需要 RuntimePermission 'setfactory' 被授予, 否则将抛出 SecurityException. 应用程序很少或者无需使用这个工具. 9.8 许可 (Permissions) 如果 Java2 安全管理被安装, 数据报套接字操作需要各种 java.net.socketpermissions. 这些在表 9.2 展示. 动作 accept 说明 表 9.2 UDP 中的许可 在 DatagramSocket 的 receive 和 connect 方法中需要. 目标主机和端口指定了远程 UDP 套接字. 在 connect DatagramSocket 的 send 和 connect 方法中需要, 当获取 InetAddress 对象的时候. 目标主机和端口指定了远程 UDP 套接字 ( 书中多了 and port 字样 ). 当构造 DatagramSocket 的时候需要, 和在它的 bind 方法中. 目标主机和端口指定了本地 listen UDP 套接字. 大多数指定为如 'localhost:1024'(fixme: Most loosely specified as "localhost:1024-"). 这个许可是 resolve 'connect' 操作必须 (imply) 的, 所以有必要明确地指定它. 目标主机和端口指定了远程 UDP 套接字. 9.8 异常 有意义的的 Java 异常可能出现哎数据报套接字操作中在表 9.3 展示. 表 9.3 UDP 中的异常 异常 由.. 抛出 含义 java.net.bindexception java.lang.illegalargumentexception DatagramSocket 构造函数和 bind 方法 DatagramSocket 的几个构造和方法 ;DatagramSocket 和 InetSocketAddress 的几个方法 java.nio.illegalblockingmodeexception DatagramSocket 的 send 和 receive 方法 DatagramSocket 的 java.io.interruptedioexception receive 方法 java.io.ioexception java.net.portunreachableexception java.lang.securityexception java.net.socketexception DatagramSocket 的 send 方法 DatagramSocket 的 send 和 receice 方法 DatagramSocket 的几个方法 DatagramSocket 的许多方法, 尤其是 receive DatagramSocket 的 请求的本地地址或者端口不能被分配, 比如, 它已经在使用中, 并且 ' 重用地址 ' 选项没有设置 违反了等式 9.1, 或者参数为 null 或者超出了范围. 这个一个 RuntimeException, 因此没有在方法的签名中出现, 或者被编译器检 查. 套接字有一个管理的通道, 处于阻塞模式中. 从 JDK1.4 开始. 发生超时 ; 在 JDK 1.4 之前. 出现了一般的 I/O 错误. 从这个异常衍生出的异常包括 IllegalBlockingModeExcepion,InterruptedIOException, SocketException 和 UnkownHostException 套接字连接到一个当前不可达的目标. 从 JDK 1.4 开始. 需要的 SocketPermission 没有被授予, 如表格 9.2 所示. 这是一个 RuntimeExeption, 没有在方法签名中展示或者由编译器检查. 一个底层的 UDP 错误发生, 或者套接字被另一线程通过 DatagramChannel 的 close 方法关闭. 许多异常从这个异常衍生, 包括 BindException. 超时发生. 从 JDK 1.4 开始. 继承了 InterruptedIOException 为了

11 java.net.sockettimeoutexception java.net.unknownhostexception receive 方法了向后兼容 JDK1.4 之前的程序. InetAddress 的所有方法, 或者不明确使用这命名的 IP 地址主机不能决定 (FIXME:The IP address of the 些, 当使用 String 主机 named host cannot be determined). 名称的时候. 9.9 套接字选项 有几个套接字选项可用, 控制 UDP 套接字的高级特性. 在 Java 中, 数据报套接字选项可用通过 java.net.datagramsocket 的方法设置和获取. 数据报套接字在下面展示, 按照它们相对重要的顺序. 在这章最后出现的一个选错, 是你最不需要关注的 超时 如我们已经在 3.12 节看到的 ( 将在 和 节再次看到 ), 不能假设一个应用程序可以永远等待一个 远程的服务, 或者服务将永远以一种即时的方式回答 (rendered), 或者服务或者中间的 (intervening) 网络设置将以可探测的方式失败 (FIXME:the intervening network infrastructure will only fail in detectable ways). 任何读取无限超时的网络程序尽快或者随后将经历一个无限的延迟. 因为这些原因, 谨慎 (prudent) 的网络程序总是在客户端几乎使用一个有限的接收超时. 接收超时通过下面 的方法设置和获取 : void setsotimeout(int timeout) throws SocketException; int getsotimeout() throws SocketException; timeout 用毫秒指定, 必须为一个正数, 表明一个有限的超时, 或者为 0, 表明一个无限的超时. 默认情况下, 读超时是无限的. 如果超时在套接字上一个阻塞的接收操作之前设置为一个有限的值, 接收将阻塞达到超时周期如果数据不可 用, 然后将抛出 InterruptedIOException, 或者如表 9.3 所示,JDK 1.4 SocketTimeoutException 从它衍生而来. 如果超时是无限的, 接收将永远阻塞, 如果数据不可用并没有错误发生. 在 3.12 节关于 TCP 超时期间的特性同样适用于 UDP. UDP 服务器等待一个客户端请求不需要使用超时, 不像 TCP 服务器, 它们没有连接去终止. 一个 UDP 服务器超时在单个线程中可用来去轮询大量的 DatagramSocket, 尽管在 节描述的 Selector 类提供了一种更好的方式去这么做 缓冲区 UDP 为每个套接字分配发送缓冲区和接收缓冲区. 这些缓冲区存在于内核等待地址空间或者 UDP 协议栈 ( 如果不同的话 ), 而不是在 JVM 或者进程地址空间. 这些缓冲区的大小由底层平台的 UDP 实现决定, 而不是 Java. 在当 前的 UDP 实现中, 发送和接收缓冲区大小至少为 8KB, 通常为 32KB, 或者更多, 可以设置如 256M 这么大或者在一些实现中更多. 在决定和如何去改变套接字缓冲区大小以前目标系统的特性必须被调查研究. 发送和接收缓冲区大小通过下面的方法设置和获取 : void setreceivebuffersize(int size) throws SocketException; int getreceivebuffersize() throws SocketException; int getsendbuffersize() throws SocketException; void setsendbuffersize(int size) throws SocketException; size 指定为字节, 提供给这些方法的值只是给底层平台一个示意, 在任何一个方向都可以被调整来适应合法的范围, 或者向上或者向下调整为适当的边界. 这些方法的返回值可能和你发送的值不匹配, 也可能与底层平台使用的实际值不匹配. 你可以在套接字关闭前的任意时刻执行这些操作 一个数据报套接字的缓冲区应该多大?

12

interfaces which it implements): int read(bytebuffer) throws IOException; int read(bytebuffer[] buffers) throws IOException; int read(bytebuffer[] buf

interfaces which it implements): int read(bytebuffer) throws IOException; int read(bytebuffer[] buffers) throws IOException; int read(bytebuffer[] buf 这章讨论了 JDK 1.4 UDP 数据报可伸缩 I/O 的使用. 10.1 UDP 的通道 在 UDP 之上的可伸缩 I/O 使用我们在之前 4.2.1 节所遇到的 DatagramChannel 类执行. 10.1.1 导入语句下面的 Java 导入语句假设在这章的示例中至始至终存在. import java.io.*; import java.net.*; import java.nio.*;

More information

Chapter #

Chapter # 第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层

More information

import java.util.*; 3.1.3 在 Java 中 的 简 单 的 TCP 服 务 器 在 Java 中, 一 个 服 务 器 端 的 被 动 的 套 接 字 由 java.net.serversocket 表 示. 一 个 TCP 服 务 器 构 造 一 个 java.net.s

import java.util.*; 3.1.3 在 Java 中 的 简 单 的 TCP 服 务 器 在 Java 中, 一 个 服 务 器 端 的 被 动 的 套 接 字 由 java.net.serversocket 表 示. 一 个 TCP 服 务 器 构 造 一 个 java.net.s 这 一 章 讨 论 了 TCP/IP 协 议 的 基 础 和 它 在 阻 塞 模 式 中 Java Socket 和 ServerSocket 对 象 的 实 现. 这 一 章 假 设 对 TCP/IP 的 基 本 概 念 和 Java 套 接 字 有 一 个 认 识, 虽 然 提 供 了 一 个 简 要 的 回 顾. TCP Channel I/O 和 非 阻 塞 模 式 在 第 5 章 讨 论.

More information

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP #

MASQUERADE # iptables -t nat -A POSTROUTING -s / o eth0 -j # sysctl net.ipv4.ip_forward=1 # iptables -P FORWARD DROP # iptables 默认安全规则脚本 一 #nat 路由器 ( 一 ) 允许路由 # iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT ( 二 ) DNAT 与端口转发 1 启用 DNAT 转发 # iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 dprot 422 -j DNAT to-destination

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2

(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2 (2005-01-26) (2005-01-26) (2005-02-27) PIC_SERVER (9) VB TCP/UDP Visual Basic Microsoft Winsock Control (MSWINSCK.OCX) UDP TCP Client Server Visual Basic UDP/TCP PIC_SERVER UDP/TCP 1. Microsoft Winsock

More information

Chap6.ppt

Chap6.ppt Computer Networks v4 cs.sjtu 12/21/12 6 Internet ftp://ftp.cs.sjtu.edu.cn/ybzhang 61 / 110 Computer Networks v4 cs.sjtu 12/21/12 ftp://ftp.cs.sjtu.edu.cn/ybzhang 62 / 110 Computer Networks v4 cs.sjtu 12/21/12

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

財金資訊-80期.indd

財金資訊-80期.indd IPv6 / LINE YouTube TCP/IP TCP (Transmission Control Protocol) IP (Internet Protocol) (node) (address) IPv4 168.95.1.1 IPv4 1981 RFC 791 --IP IPv4 32 2 32 42 IP (Internet Service Provider ISP) IP IP IPv4

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

C6_ppt.PDF

C6_ppt.PDF C01-202 1 2 - (Masquerade) (Replay) (Message Modification) (Denial of Service) - ( ) (Eavesdropping) (Traffic Analysis) 8 1 2 7 3 6 5 4 3 - TCP SYN (SYN flood) Smurf Ping of Death LAND Attack Teardrop

More information

穨control.PDF

穨control.PDF TCP congestion control yhmiu Outline Congestion control algorithms Purpose of RFC2581 Purpose of RFC2582 TCP SS-DR 1998 TCP Extensions RFC1072 1988 SACK RFC2018 1996 FACK 1996 Rate-Halving 1997 OldTahoe

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

Microsoft PowerPoint - CH06.ppt [相容模式]

Microsoft PowerPoint - CH06.ppt [相容模式] 第六章伺服器 課前指引本章介紹如何以 Java 語言設計出伺服器應用程式, 學習利用 ServerSoc ket 類別設計 TCP 伺服器, 並取得輸出入資料流後傳遞資料到用戶端 第一部份除介紹 TCP 伺服器外, 亦以 偵測本機被占用的埠號 報時伺服器 與 回音伺服器 等實作範例, 讓讀者能更瞭解伺服器程式設計的方法 UDP 是本章的第二項重點, 學習如何送出 UDP 封包, 並實際設計可接收 UDP

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

UDP 8.2 TCP/IP OSI OSI 3 OSI TCP/IP IP TCP/IP TCP/IP Transport Control Protocol TCP User Datagram Protocol UDP TCP TCP/IP IP TCP TCP/IP TC

UDP 8.2 TCP/IP OSI OSI 3 OSI TCP/IP IP TCP/IP TCP/IP Transport Control Protocol TCP User Datagram Protocol UDP TCP TCP/IP IP TCP TCP/IP TC 8 TCP/IP TCP/IP TCP OSI 8.1 OSI 4 end to end A B FTP OSI Connection Management handshake Flow Control Error Detection IP Response to User s Request TCP/IP TCP 181 UDP 8.2 TCP/IP OSI OSI 3 OSI 3 8.1 TCP/IP

More information

address)" 套接字 在主机中一个通信端点通过一个称为套接字的抽象概念表示. 一个套接字在它的本机中与一个 IP 地址和一个端口关联. 在 Java 中, 一个套接字代表 Socket,ServerSocket,DatagramSocket 或者 MulticastSocket

address) 套接字 在主机中一个通信端点通过一个称为套接字的抽象概念表示. 一个套接字在它的本机中与一个 IP 地址和一个端口关联. 在 Java 中, 一个套接字代表 Socket,ServerSocket,DatagramSocket 或者 MulticastSocket 这章介绍 IP 协议和它们在 Java 中的实现.IP 代表 ' 互联网协议 ', 它是互联网的基础协议, 像胶水一样将网络都连接在一起. 2.1 IP 如 RFC 791 所说,' 互联网协议被设计使用在包 - 交换的计算机通信网络的互相连接的系统中 '. 互联网仅仅是 一个大量的这样的系统的通信, 通过 IP 协议, 各种类型的包 - 交换网络, 包括以太网和令牌环网, 电话线路和卫星通信电路.

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

Microsoft Word - (web)_F.1_Notes_&_Application_Form(Chi)(non-SPCCPS)_16-17.doc

Microsoft Word - (web)_F.1_Notes_&_Application_Form(Chi)(non-SPCCPS)_16-17.doc 聖 保 羅 男 女 中 學 學 年 中 一 入 學 申 請 申 請 須 知 申 請 程 序 : 請 將 下 列 文 件 交 回 本 校 ( 麥 當 勞 道 33 號 ( 請 以 A4 紙 張 雙 面 影 印, 並 用 魚 尾 夾 夾 起 : 填 妥 申 請 表 並 貼 上 近 照 小 學 五 年 級 上 下 學 期 成 績 表 影 印 本 課 外 活 動 表 現 及 服 務 的 證 明 文 件 及

More information

untitled

untitled Lwip Swedish Institute of Computer Science February 20, 2001 Adam Dunkels adam@sics.se (QQ: 10205001) (QQ: 329147) (QQ:3232253) (QQ:3232253) QQ ARM TCPIP LCD10988210 LWIP TCP/IP LWIP LWIP lwip API lwip

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

/ / (FC 3)...

/ / (FC 3)... Modbus/TCP 1.0 1999 3 29 Andy Swales Schneider aswales@modicon.com ... 2 1.... 3 2.... 3 2.1.. 3 2.2..4 2.3..4 2.4... 5 3.... 5 3.1 0... 5 3.2 1... 5 3.3 2... 6 3.4 / /... 7 4.... 7 5.... 8 5.1 0... 9

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

IP Access Lists IP Access Lists IP Access Lists

IP Access Lists IP Access Lists IP Access Lists Chapter 10 Access Lists IP Access Lists IP Access Lists IP Access Lists Security) IP Access Lists Access Lists (Network router For example, RouterA can use an access list to deny access from Network 4

More information

VoIP Make a Rtp Call VoIP Abstract... 2 VoIP RTP...3 Socket IP...9 Config Two Voice-hub

VoIP Make a Rtp Call VoIP Abstract... 2 VoIP RTP...3 Socket IP...9 Config Two Voice-hub VoIP... 2... 2 Abstract... 2... 3... 3 RTP...3 Socket...4...6...7 IP...9 Config Two Voice-hub... 10 1 12 VoIP VoIP voice-hub voice-hub Abstract At the beginning of this paper, we introducted the essential

More information

lan03_yen

lan03_yen IEEE 8. LLC Logical Link Control ll rights reserved. No part of this publication and file may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical,

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

ebook12-1

ebook12-1 API N e t B I O S Wi n s o c k A P I Wi n s o c k 1 N e t B I O S Wi n s o c k A P I N e t B I O S O S / 2 D O S 2 3 4 Wi n d o w s Wi n d o w s 1 NetBIOS Network Basic Input/Output System, NetBIOS A P

More information

...1 What?...2 Why?...3 How? ( ) IEEE / 23

...1 What?...2 Why?...3 How? ( ) IEEE / 23 .... IEEE 1588 2010 7 8 ( ) IEEE 1588 2010 7 8 1 / 23 ...1 What?...2 Why?...3 How? ( ) IEEE 1588 2010 7 8 2 / 23 ...1 What?...2 Why?...3 How? ( ) IEEE 1588 2010 7 8 3 / 23 IEEE 1588 ( ) IEEE 1588 2010

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

实施生成树

实施生成树 学习沉淀成长分享 Spanning-tree 红茶三杯 ( 朱 SIR) 微博 :http://t.sina.com/vinsoney Latest update: 2012-06-01 STP 的概念 冗余拓扑 Server/host X Router Y Segment 1 Switch A Switch B Segment 2 冗余拓扑能够解决单点故障问题 ; 冗余拓扑造成广播风暴, 多帧复用,

More information

ebook140-8

ebook140-8 8 Microsoft VPN Windows NT 4 V P N Windows 98 Client 7 Vintage Air V P N 7 Wi n d o w s NT V P N 7 VPN ( ) 7 Novell NetWare VPN 8.1 PPTP NT4 VPN Q 154091 M i c r o s o f t Windows NT RAS [ ] Windows NT4

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

<4D6963726F736F667420506F776572506F696E74202D20A1B6CFEEC4BFD2BB20B3F5CAB6BCC6CBE3BBFACDF8C2E7A1B7C8CECEF1C8FD20CAECCFA4544350A1A24950D0ADD2E9BACD4950B5D8D6B72E707074>

<4D6963726F736F667420506F776572506F696E74202D20A1B6CFEEC4BFD2BB20B3F5CAB6BCC6CBE3BBFACDF8C2E7A1B7C8CECEF1C8FD20CAECCFA4544350A1A24950D0ADD2E9BACD4950B5D8D6B72E707074> 项 目 一 : 初 识 计 算 机 网 络 任 务 三 熟 悉 TCP/IP 协 议 和 IP 地 址 一. 学 习 要 求 : 学 习 要 求 及 难 点 1. 了 解 IP 协 议 TCP 协 议 和 UDP 协 议 2. 熟 悉 IP 地 址 的 划 分 和 分 类 3. 了 解 IPV6 的 地 址 结 构 二. 难 点 : 1. IP 地 址 三. 学 时 : 1. 理 论 教 学 :6

More information

计 算 机 系 统 应 用 http://www.c-s-a.org.cn 2016 年 第 25 卷 第 4 期 线 程 的 复 用 [2,3]. 通 常 情 况 下, 服 务 器 端 程 序 在 启 动 时 创 建 若 干 数 量 的 线 程 对 象 并 缓 存 起 来, 此 时 它 们 处 于

计 算 机 系 统 应 用 http://www.c-s-a.org.cn 2016 年 第 25 卷 第 4 期 线 程 的 复 用 [2,3]. 通 常 情 况 下, 服 务 器 端 程 序 在 启 动 时 创 建 若 干 数 量 的 线 程 对 象 并 缓 存 起 来, 此 时 它 们 处 于 1 线 程 池 技 术 在 考 试 系 统 中 的 应 用 葛 萌 1, 于 博 2, 欧 阳 宏 基 ( 咸 阳 师 范 学 院 信 息 工 程 学 院, 咸 阳 712000) ( 河 南 建 筑 职 业 技 术 学 院 信 息 工 程 系, 郑 州 450064) 1 摘 要 : 当 较 大 规 模 客 户 端 并 发 请 求 服 务 器 端 应 用 程 序 时, 传 统 的 为 每 个 请

More information

RUN_PC連載_12_.doc

RUN_PC連載_12_.doc PowerBuilder 8 (12) PowerBuilder 8.0 PowerBuilder PowerBuilder 8 PowerBuilder 8 / IDE PowerBuilder PowerBuilder 8.0 PowerBuilder PowerBuilder PowerBuilder PowerBuilder 8.0 PowerBuilder 6 PowerBuilder 7

More information

IP505SM_manual_cn.doc

IP505SM_manual_cn.doc IP505SM 1 Introduction 1...4...4...4...5 LAN...5...5...6...6...7 LED...7...7 2...9...9...9 3...11...11...12...12...12...14...18 LAN...19 DHCP...20...21 4 PC...22...22 Windows...22 TCP/IP -...22 TCP/IP

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

构建 Bluetooth 移动应用 主讲人 : 任凯 微信 :kaiser-tech 2016 年 5 月 6 日 3

构建 Bluetooth 移动应用 主讲人 : 任凯 微信 :kaiser-tech 2016 年 5 月 6 日 3 构建 Bluetooth 移动应用 主讲人 : 任凯 kren@bluetooth.com 微信 :kaiser-tech 2016 年 5 月 6 日 3 无处不在 IOS ANDROID WINDOWS BLACKBERRY TIZEN 4 平台性能 平台 操作系统 操作系统版本 ios / Android / Windows / BlackBerry 10 / Tizen Android 4.3

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

untitled

untitled ArcGIS Server Web services Web services Application Web services Web Catalog ArcGIS Server Web services 6-2 Web services? Internet (SOAP) :, : Credit card authentication, shopping carts GIS:, locator services,

More information

untitled

untitled Ogre Rendering System http://antsam.blogone.net AntsamCGD@hotmail.com geometry systemmaterial systemshader systemrendering system API API DirectX OpenGL API Pipeline Abstraction API Pipeline Pipeline configurationpipeline

More information

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO Linux muduo C++ (giantchen@gmail.com) 2012-09-30 C++ TCP C++ x86-64 Linux TCP one loop per thread Linux native muduo C++ IT 5 C++ muduo 2 C++ C++ Primer 4 W. Richard Stevens UNIX Sockets API echo Sockets

More information

Microsoft Word - template.doc

Microsoft Word - template.doc HGC efax Service User Guide I. Getting Started Page 1 II. Fax Forward Page 2 4 III. Web Viewing Page 5 7 IV. General Management Page 8 12 V. Help Desk Page 13 VI. Logout Page 13 Page 0 I. Getting Started

More information

Microsoft Word - Java Socket 連線的建立課程_柯志亨老師_電子書.doc

Microsoft Word - Java Socket 連線的建立課程_柯志亨老師_電子書.doc 第五章 Java Socket 連線的建立 < 學習目標 > 學會使用 Java 實作基本的 Socket 連線並傳送訊息 5-1 認識 Socket 所有的網路應用程式, 都是以 Socket 為基礎, 它的功能是在兩台電腦之間建立網路連線, 並能夠傳送與接收資料 Socket 指的是兩個程序 (process) 透過網路溝通的端點, 要建立 Socket 連線, 一般來說需要兩個資訊, 一個是

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特 网 的 标 准 化 工 作 1.2.4 计 算 机 网 络 在

第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特 网 的 标 准 化 工 作 1.2.4 计 算 机 网 络 在 计 算 机 网 络 ( 第 4 版 ) 课 件 第 1 章 计 算 机 网 络 概 述 郭 庆 北 Ise_guoqb@ujn.edu.cn 2009-02-25 第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特

More information

FortiGate-v5.2-PPPOE 拨号协商时的 AC-name 和 Service-name 版本 1.0 时间 2015 年 3 月 支持的版本 FortiOS v5.2.x 作者 黄豪赫 状态 已审核 反馈

FortiGate-v5.2-PPPOE 拨号协商时的 AC-name 和 Service-name 版本 1.0 时间 2015 年 3 月 支持的版本 FortiOS v5.2.x 作者 黄豪赫 状态 已审核 反馈 FortiGate-v5.2-PPPOE 拨号协商时的 AC-name 和 Service-name 版本 1.0 时间 2015 年 3 月 支持的版本 FortiOS v5.2.x 作者 黄豪赫 状态 已审核 反馈 support_cn@fortinet.com 1 目 录 简介...3 PPPoE 发现阶段简介...3 相关组件...4 参考文档...4 FortiGate 相关命令介绍...

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 1Z0-854 Title : Java Standard Edition 5 Programmer Certified Professional Upgrade Exam Version : Demo 1 / 12 1.Given: 20. public class CreditCard

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

BYOD Http Redirect convergence Client (1) 2008R2 NLB( ) (2) NLB Unicast mode switch flooding (arp ) NLB DNS Redirect 1. Round-Robin DNS DNS IP/DNS Cli

BYOD Http Redirect convergence Client (1) 2008R2 NLB( ) (2) NLB Unicast mode switch flooding (arp ) NLB DNS Redirect 1. Round-Robin DNS DNS IP/DNS Cli BYOD 204 2015 GoogleHicloud (Load Balance) Server Load Balance Link Load Balance Server Redirect 1. URL Redirect redirector URL redirect Real Server Client HTTP Real Server Web Client 2 (1) URL Redirect

More information

提纲 1 2 OS Examples for 3

提纲 1 2 OS Examples for 3 第 4 章 Threads2( 线程 2) 中国科学技术大学计算机学院 October 28, 2009 提纲 1 2 OS Examples for 3 Outline 1 2 OS Examples for 3 Windows XP Threads I An Windows XP application runs as a seperate process, and each process may

More information

weblogic

weblogic Weblogic Allen Long allen@huihoo.com http://www.huihoo.com 2004-04 1 WebLogic, WLS WLS Domain 2 Weblogic6.1 Weblogic6.1 J2EE1.2,J2EE1.3 HTTP 1.1 J2EE Connector Architecture 1.0 J2EE EJB 2.0 J2EE JDBC 2.0

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

Learning Java

Learning Java Java Introduction to Java Programming (Third Edition) Prentice-Hall,Inc. Y.Daniel Liang 2001 Java 2002.2 Java2 2001.10 Java2 Philip Heller & Simon Roberts 1999.4 Java2 2001.3 Java2 21 2002.4 Java UML 2002.10

More information

untitled

untitled Velocity 14 100061 315@pptph.com.cn http://www.pptph.com.cn 010-67129212 010-67129211 787 1092 1/16 22 535 1 0 000 2001 11 1 2001 11 1 ISBN 7-115-09828-X/TP 2577 32.00 01067129223 1 2 1 2 3 4 5 1 Velocity

More information

Simulator By SunLingxi 2003

Simulator By SunLingxi 2003 Simulator By SunLingxi sunlingxi@sina.com 2003 windows 2000 Tornado ping ping 1. Tornado Full Simulator...3 2....3 3. ping...6 4. Tornado Simulator BSP...6 5. VxWorks simpc...7 6. simulator...7 7. simulator

More information

active phisical rp address: backup phisical rp address: 截取部分 TOPO 图说明到 不通的问题 : internet internet tengige 0/0/0/0 tengige

active phisical rp address: backup phisical rp address: 截取部分 TOPO 图说明到 不通的问题 : internet internet tengige 0/0/0/0 tengige ASR9000 ping 丢包 troubleshooting 目录 硬件平台软件版本案例介绍问题分析思路问题总结经验总结相关命令 硬件平台 ASR9000 软件版本 4.2.0 案例介绍 拓扑示例 : 问题, 客户从外网 internet ping 3 个 vrrp subnet 的地址时候始终只能通一个 IP 地址 : vrrp virtual IP :2.2.2.129 其他不能 ping 通的

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

untitled

untitled 1....2...2...6 2....10 3. UDP...15 4. TCP...16...16...16 1 1. PC COM1 COM2 COM1 COM2 DTU 2 3 4 COM1 COM1 COM2 COM ID 13900000000 DTU COM1 5 COM2 DTU DTU DTU DTU DTU DTU DTU ID ID 3031 3032 2 ID 13900000001

More information

目次 

目次  軟 體 工 程 期 末 報 告 網 路 麻 將 91703014 資 科 三 黃 偉 嘉 91703024 資 科 三 丘 祐 瑋 91703030 資 科 三 江 致 廣 1 目 次 壹 前 言 (Preface) P.4 貳 計 畫 簡 述 及 預 期 效 益 (Project Description and Expected Results) P.4 參 系 統 開 發 需 求 (System

More information

Microsoft PowerPoint - 数据通信-ch1.ppt

Microsoft PowerPoint - 数据通信-ch1.ppt 主 要 内 容 与 基 本 要 求 主 要 内 容 数 据 通 信 与 计 算 机 网 络 计 算 机 网 络 的 发 展 过 程 分 类 以 及 主 要 性 能 指 标 ; 分 组 交 换 的 基 本 原 理 及 其 与 电 路 交 换 报 文 交 换 的 联 系 与 区 别 ; 计 算 机 网 络 的 协 议 与 体 系 结 构 第 1 章 概 述 基 本 要 求 掌 握 分 组 交 换 电 路

More information

云数据库 RDS SDK

云数据库 RDS SDK 云数据库 RDS SDK SDK SDK 下载 SDK 下载 最新版本 java_sdk.zip python_sdk.zip php_sdk.zip c#_sdk.zip 历史版本 2015-11-3 java_sdk.zip python_sdk.zip php_sdk.zip c#_sdk.zip JAVA 教程 JAVA 创建 Access Key 登陆阿里云账号 打开 我的 Access

More information

(baking powder) 1 ( ) ( ) 1 10g g (two level design, D-optimal) 32 1/2 fraction Two Level Fractional Factorial Design D-Optimal D

(baking powder) 1 ( ) ( ) 1 10g g (two level design, D-optimal) 32 1/2 fraction Two Level Fractional Factorial Design D-Optimal D ( ) 4 1 1 1 145 1 110 1 (baking powder) 1 ( ) ( ) 1 10g 1 1 2.5g 1 1 1 1 60 10 (two level design, D-optimal) 32 1/2 fraction Two Level Fractional Factorial Design D-Optimal Design 1. 60 120 2. 3. 40 10

More information

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / /

4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / / 4 AMI AMI AMI SC345604 89 4.1 AMI MQSeries API AMI MQI AMI / / AMI JavaC C++ AMI / AMI AMI - / / 91 41-90 41 AMI - AMI - - API MQI MQSeries MQI AMI IBM 91 MQSeries REPOSITORY AMI AMI AMI XML Windows AMI

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

BC04 Module_antenna__ doc

BC04 Module_antenna__ doc http://www.infobluetooth.com TEL:+86-23-68798999 Fax: +86-23-68889515 Page 1 of 10 http://www.infobluetooth.com TEL:+86-23-68798999 Fax: +86-23-68889515 Page 2 of 10 http://www.infobluetooth.com TEL:+86-23-68798999

More information

Microsoft PowerPoint - STU_EC_Ch08.ppt

Microsoft PowerPoint - STU_EC_Ch08.ppt 樹德科技大學資訊工程系 Chapter 8: Counters Shi-Huang Chen Fall 2010 1 Outline Asynchronous Counter Operation Synchronous Counter Operation Up/Down Synchronous Counters Design of Synchronous Counters Cascaded Counters

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

ebook140-11

ebook140-11 11 VPN Windows NT4 B o r d e r M a n a g e r VPN VPN V P N V P N V P V P N V P N TCP/IP 11.1 V P N V P N / ( ) 11.1.1 11 V P N 285 2 3 1. L A N LAN V P N 10MB 100MB L A N VPN V P N V P N Microsoft PPTP

More information

<4D6963726F736F667420576F7264202D20D6D02D30312D31203036CFC2C8EDBCFEC9E8BCC6CAA6C9CFCEE7CCE2>

<4D6963726F736F667420576F7264202D20D6D02D30312D31203036CFC2C8EDBCFEC9E8BCC6CAA6C9CFCEE7CCE2> 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 006 年 下 半 年 软 件 设 计 师 上 午 试 卷 ( 考 试 时 间 9 : 00~11 : 30 共 150 分 钟 ) 请 按 下 述 要 求 正 确 填 写 答 题 卡 1. 在 答 题 卡 的 指 定 位 置 上 正 确 写 入 你 的 姓 名 和 准 考 证 号, 并 用 正 规 B 铅 笔

More information

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat

2. AOP 底层技术实现 小风 Java 实战系列教程 关键词 : 代理模式 代理模型分为两种 : 1) 接口代理 (JDK 动态代理 ) 2) 子类代理 (Cglib 子类代理 ) 需求 :CustomerService 业务类, 有 save,update 方法, 希望在 save,updat 本章学习目标 小风 Java 实战系列教程 AOP 思想概述 AOP 底层技术实现 AOP 术语介绍 SpringAOP 的 XML 方式 HelloWorld SpringAOP 的 XML 方式配置细节 SpringAOP 的注解方式 SpringAOP 的零配置方式 1. AOP 思想概述 1.1. AOP 思想简介 1.2. AOP 的作用 2. AOP 底层技术实现 小风 Java 实战系列教程

More information

VIDEOJET connect 7000 VJC-7000-90 zh- CHS Operation Manual VIDEOJET connect 7000 zh-chs 3 目 录 1 浏 览 器 连 接 7 1.1 系 统 要 求 7 1.2 建 立 连 接 7 1.2.1 摄 像 机 中 的 密 码 保 护 7 1.3 受 保 护 的 网 络 7 2 系 统 概 述 8 2.1 实 况

More information

東莞工商總會劉百樂中學

東莞工商總會劉百樂中學 /2015/ 頁 (2015 年 版 ) 目 錄 : 中 文 1 English Language 2-3 數 學 4-5 通 識 教 育 6 物 理 7 化 學 8 生 物 9 組 合 科 學 ( 化 學 ) 10 組 合 科 學 ( 生 物 ) 11 企 業 會 計 及 財 務 概 論 12 中 國 歷 史 13 歷 史 14 地 理 15 經 濟 16 資 訊 及 通 訊 科 技 17 視 覺

More information

ebook67-1

ebook67-1 1 1.1 T C P / I P T C P / I P 60 9 ( I n t e r n e t ) WA N 100 T C P / I P T C P / I P [ Lynch 1993] 1.2 Telnet FTP e-mail T C P / I P TCP UDP T C P / I P 1-1 1) 1-1 TCP/IP 2) T C P / I P I I C M P I

More information

VASP应用运行优化

VASP应用运行优化 1 VASP wszhang@ustc.edu.cn April 8, 2018 Contents 1 2 2 2 3 2 4 2 4.1........................................................ 2 4.2..................................................... 3 5 4 5.1..........................................................

More information

9 Internet 10 Internet

9 Internet 10 Internet 1 2 3 4 5 6 Internet 7 8 9 Internet 10 Internet 11 12 1 1.1 1.2 1.3 1.4 1.5 1.6 1.1 1.1.1 20 50 20 60 ARPANET ARPANET Internet 20 70 ISO International Organization for Standardization TCP/IP 20 90 Internet

More information

RxJava

RxJava RxJava By 侦跃 & @hi 头 hi RxJava 扩展的观察者模式 处 观察者模式 Observable 发出事件 Subscriber 订阅事件 bus.post(new AnswerEvent(42)); @Subscribe public void onanswer(answerevent event) {! }! Observable observable = Observable.create(new

More information

Bus Hound 5

Bus Hound 5 Bus Hound 5.0 ( 1.0) 21IC 2007 7 BusHound perisoft PC hound Bus Hound 6.0 5.0 5.0 Bus Hound, IDE SCSI USB 1394 DVD Windows9X,WindowsMe,NT4.0,2000,2003,XP XP IRP Html ZIP SCSI sense USB Bus Hound 1 Bus

More information

<4D6963726F736F667420506F776572506F696E74202D2030325FC2B2B3F85FA44AAB49B0BBB4FABB50B977A8BEA874B2CEC2B2A4B6BB50C0B3A5CE2E707074>

<4D6963726F736F667420506F776572506F696E74202D2030325FC2B2B3F85FA44AAB49B0BBB4FABB50B977A8BEA874B2CEC2B2A4B6BB50C0B3A5CE2E707074> 入 侵 偵 測 與 預 防 系 統 簡 介 與 應 用 蕭 翔 之 講 師 BS 7799 LA 課 程 大 綱 第 一 章 認 識 入 侵 偵 測 與 預 防 系 統 第 二 章 入 侵 偵 測 與 預 防 系 統 的 功 能 分 類 偵 測 技 術 第 三 章 入 侵 偵 測 與 預 防 系 統 部 署 架 構 第 四 章 入 侵 偵 測 與 預 防 系 統 的 應 用 效 益 第 五 章 結

More information

FileMaker 15 ODBC 和 JDBC 指南

FileMaker 15 ODBC 和 JDBC 指南 FileMaker 15 ODBC JDBC 2004-2016 FileMaker, Inc. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker FileMaker Go FileMaker, Inc. / FileMaker WebDirect FileMaker, Inc. FileMaker

More information

EMC® VNX® Series VNX8000™ Block 安装指南

EMC® VNX® Series VNX8000™ Block 安装指南 EMC VNX Series VNX8000 Block 安 装 指 南 300-999-791 REV 05 版 权 所 有 2014-2015 EMC Corporation 保 留 所 有 权 利 中 国 印 刷 发 布 日 期 : 2015 年 2 月 EMC 确 信 本 出 版 物 在 发 布 之 日 内 容 准 确 无 误 本 出 版 物 中 的 信 息 可 随 时 更 改 而 不 另

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

《大话设计模式》第一章

《大话设计模式》第一章 第 1 章 代 码 无 错 就 是 优? 简 单 工 厂 模 式 1.1 面 试 受 挫 小 菜 今 年 计 算 机 专 业 大 四 了, 学 了 不 少 软 件 开 发 方 面 的 东 西, 也 学 着 编 了 些 小 程 序, 踌 躇 满 志, 一 心 要 找 一 个 好 单 位 当 投 递 了 无 数 份 简 历 后, 终 于 收 到 了 一 个 单 位 的 面 试 通 知, 小 菜 欣 喜

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I

IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I 2004 5 IP TCP/IP PC OS µclinux MPEG4 Blackfin DSP MPEG4 IP UDP Winsock I/O DirectShow Filter DirectShow MPEG4 µclinux TCP/IP IP COM, DirectShow I Abstract The techniques of digital video processing, transferring

More information

Linux网络编程socket错误分析

Linux网络编程socket错误分析 Linux 网 络 编 程 socket 错 误 分 析 socket 错 误 码 : EINTR: 4 阻 塞 的 操 作 被 取 消 阻 塞 的 调 用 打 断 如 设 置 了 发 送 接 收 超 时, 就 会 遇 到 这 种 错 误 只 能 针 对 阻 塞 模 式 的 socket 读, 写 阻 塞 的 socket 时,-1 返 回, 错 误 号 为 INTR 另 外, 如 果 出 现 EINTR

More information