ACE
|
|
|
- 振亮 司
- 7 years ago
- Views:
Transcription
1 ACE Socket Allen Long huihoo - Enterprise Open Source
2 内容安排 如何访问 OS 服务 TCP/IP Socket 编程接口 使用 ACE 的 UDP 类进行网络编程 单播 广播 多播
3 Socket Interface 3
4 Socket API 概述 (1/2) Sockets 是网络编程最普遍的接口 Socket API 最初是在 BSD Unix 中开发, 用来为 TCP/IP 协议族提供应用级程序接口 The Socket API 分五类有近 20 多个函数 Socket 通过 Socket API 创建通信端点, 并通过句柄 (handle) 访问 每个 socket 都可以绑定一个本地地址和一个远程地址 In Unix, 对大多数应用来讲, socket 句柄和其他 I/O 句柄 ( 如 : 文件 管道 终端设备句柄 ) 可以互换使用. 而在 windows 中却不可以. 本地管理 :socket 接口为管理本地上下文信息提供以下函数 : socket: 分配最小的未用 socket 句柄 ; bind: 将 socket 句柄与本地或远地地址相关联 ; 本地上下文管理 (Local getsockname context 和 getpeername: 分别确定 socket 所连接的本地或远地地址 ; management) close: 释放 socket 句柄, 使它可用于后面的复用 连接建立和连接终止 :socket 接口为建立和终止连接提供以下函数 : connect: 客户通常使用 connect 来主动地与服务器建立连接 ; 连接建立和终止 (Connection establishment & termination) listen: 服务器使用 listen 来指示它想要被动地侦听进入的客户连接请求 ; accept: 服务器使用 accept 来创建新的通信端点, 以为客户服务 ; shutdown: 有选择地终止一个双向连接的读端和 / 或写端流 4
5 5 Socket API 概述 (2/2) 数据传输机制 :socket 接口提供以下函数来发送和接收数据 : read/write: 通过特定句柄接收和传输数据缓冲区 ; send/recv: 与 read/write 类似, 但它们提供一个额外的参数来控制特定的 socket 特有操作 ( 比如交换 紧急 数据, 或 偷看 接收队列中的数据, 而又不把它从队列中移除 ); 数据传输机制 sendto/recvfrom: 交换无连接数据报 ; readv/writev: 分别支持 分散读 和 集中写 语义 ( 这些操作优化用户 / 内核模式切换并简化内存管理 ); sendmsg/recvmsg: 通用函数, 包含了所有其他数据传输函数的行为 对于 UNIX 域的 socket,sendmsg 和 recvmsg 函数还提供在同一主机的任意进程间传递 访问权限 ( 比如打开文件句柄 ) 的能力 注意这些接口也可被用于其他类型的 I/O, 比如文件和终端 选项 (option) 管理 :socket 接口定义以下函数, 允许用户改变 socket 行为的缺省语义 : setsockopt 和 getsockopt: 修改或查询在协议栈不同层次中的选项 选项包括多点传送 广播, 以及设置 / 获取发送和接收传输缓冲区的大小 ; 选项管理 fcntl 和 ioctl: 是 UNIX 系统调用, 使在 socket 上能够进行异步 I/O 非阻塞 I/O, 以及紧急消息递送 除了上面描述的 socket 函数, 通信软件还可使用以下标准库函数和系统调用 : gethostbyname 和 gethostbyaddr: 处理网络寻址的多种情况, 比如映射主机名到 IP 地址 ; getservbyname: 通过服务的端口号或人类可读的名字来对它们进行标识 ; ntohl ntohs htonl htons: 执行网络字节序转换 ; 网络地址 select: 在成组的打开的句柄上执行基于 I/O 和基于定时器的事件多路分离
6 Linux Socket Server (1/2) #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define MYPORT 8000 #define BACKLOG 10 int main() int sockfd, new_fd; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int sin_size; sockfd = socket(af_inet, SOCK_STREAM, 0); if(sockfd == -1) perror("socket() error!"); exit(1); else printf("socket() is OK...\n"); my_addr.sin_family = AF_INET; my_addr.sin_port = htons(myport); my_addr.sin_addr.s_addr = INADDR_ANY; 6
7 7 Linux Socket Server (2/2) memset(&(my_addr.sin_zero), 0, 8); if(bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)) == -1) perror("bind() error lol!"); exit(1); else printf("bind() is OK...\n"); if(listen(sockfd, BACKLOG) == -1) perror("listen() error lol!"); exit(1); else printf("listen() is OK...\n"); sin_size = sizeof(struct sockaddr_in); new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size); if(new_fd == -1) perror("accept() error!"); else printf("accept() is OK...\n"); close(new_fd); close(sockfd); return 0;
8 8 Linux Socket Client #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define DEST_IP " " #define DEST_PORT 8000 int main(int argc, char *argv[ ]) int sockfd; struct sockaddr_in dest_addr; sockfd = socket(af_inet, SOCK_STREAM, 0); if(sockfd == -1) perror("client-socket() error!"); exit(1); else printf("client-socket() sockfd is OK...\n"); dest_addr.sin_family = AF_INET; dest_addr.sin_port = htons(dest_port); dest_addr.sin_addr.s_addr = inet_addr(dest_ip); memset(&(dest_addr.sin_zero), 0, 8); if(connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) == -1)...
9 9 Windows Socket Server #include <winsock2.h> #include <ws2tcpip.h> #include <stdlib.h> #include <stdio.h> int cdecl main(void) WSADATA wsadata; SOCKET ListenSocket = INVALID_SOCKET, ClientSocket = INVALID_SOCKET; struct addrinfo *result = NULL, hints; char recvbuf[default_buflen]; int iresult, isendresult; int recvbuflen = DEFAULT_BUFLEN; // Initialize Winsock iresult = WSAStartup(MAKEWORD(2,2), &wsadata); if (iresult!= 0) printf("wsastartup failed: %d\n", iresult); return 1;...
10 Windows Socket Client int cdecl main(int argc, char **argv) WSADATA wsadata; SOCKET ConnectSocket = INVALID_SOCKET; struct addrinfo *result = NULL, *ptr = NULL, hints; char *sendbuf = "this is a test"; char recvbuf[default_buflen]; int iresult; int recvbuflen = DEFAULT_BUFLEN; // Validate the parameters if (argc!= 2) printf("usage: %s server-name\n", argv[0]); return 1; // Initialize Winsock iresult = WSAStartup(MAKEWORD(2,2), &wsadata); if (iresult!= 0) printf("wsastartup failed: %d\n", iresult); return 1;... 10
11 11 Windows Socket 例子 cl server.cpp /link "D:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\WS2_32.Lib" cl client.cpp /link "D:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\WS2_32.Lib" 运行 : server.exe client.exe localhost
12 IPC SAP: 进程间通信服务访问点包装 ACE_IPC_SAP ACE_SOCK ACE_TLI ACE_SPIPE ACE_FIFO ACE_SOCK 封装 socket 接口 ACE_TLI 系统 V 传输层接口 ACE_SPIPE SVR4 STREAM 管道 ACE_FIFO UNIX FIFO 除此之外,ACE 还提供对 ATM,DEV,FILE,SSL,UPIPE 的封装
13 ACE Socket 编程接口 增强的类型安全 确保可移植性 简单通用的使用 高层抽象的构件基础 ACE_SOCK_Connector ACE_SOCK_Acceptor ACE_SOCK_Stream ACE_INET_Addr
14 ACE Socket 编程接口 Dgram 类和 Stream 类 :Dgram 类基于 UDP 数据报协议, 提供不可靠的无连接消息传递功能. 另一方面,Stream 类基于 TCP 协议, 提供面向连接的消息传递 Acceptor Connector 类和 Stream 类 :Acceptor 和 Connector 类分别用于被动和主动地建立连接.Acceptor 类封装 BSD accept() 调用, 而 Connector 封装 BSD connect() 调用.Stream 类用于在连接建立之后提供双向的数据流, 并包含有发送和接收方法. 类名 ACE_SOCK_Acceptor 职责 用于被动的连接建立, 基于 BSD accept() 和 listen() 调用 ACE_SOCK_Connector 用于主动的连接建立, 基于 BSD connect() 调用 ACE_SOCK_Dgram ACE_SOCK_IO ACE_SOCK_Stream ACE_SOCK_CODgram ACE_SOCK_Dgram_Mcast ACE_SOCK_Dgram_Bcast 用于提供基于 UDP( 用户数据报协议 ) 的无连接消息传递服务 封装了 sendto() 和 receivefrom() 等调用, 并提供了简单的 send() 和 recv() 接口 用于提供面向连接的消息传递服务 封装了 send() recv() 和 write() 等调用 该类是 ACE_SOCK_Stream 和 ACE_SOCK_CODgram 类的基类 用于提供基于 TCP( 传输控制协议 ) 的面向连接的消息传递服务 派生自 ACE_SOCK_IO, 并提供了更多的包装方法 用于提供有连接数据报 (connected datagram) 抽象 派生自 ACE_SOCK_IO; 它包含的 open() 方法使用 bind() 来绑定到指定的本地地址, 并使用 UDP 连接到远地地址 用于提供基于数据报的多点传送 (multicast) 抽象 包括预订多点传送组, 以及发送和接收消息的方法 用于提供基于数据报的广播 (broadcast) 抽象 包括在子网中向所有接口广播数据报消息的方法
15 TCP/IP Socket 中的角色 (Role) The active connection role (ACE_SOCK_Connector) is played by a peer application that initiates a connection to a remote peer The passive connection role (ACE_SOCK_Acceptor) is played by a peer application that accepts a connection from a remote peer & The communication role (ACE_SOCK_Stream) is played by both peer applications to exchange data after they are connected
16 SOCK SAP 设计原则 - 在编译时强制实现类型安全性 : SOCK SAP 类是强类型的, 非法操作在编译时 而不是运行时被拒绝 ; - 允许受控的类型安全性违例 : 通过提供的 get_handle 和 set_handle 方法 ; - 为常见情况进行简化 : 为常用方法参数提供缺省值 ( 如 : ACE_SOCK_Connector 构造器有六个参数 ). 定义简洁的接口 ( 如 : 使用 ACE_LSOCK* 类来传递 socket 句柄是非常简洁的 ). 将多个操作组合进单一操作 ( 如 : ACE_SOCK_Acceptor 组合了 socket bind 和 listen); - 用层次类属替代一维的接口 : 基类表示类属组件间的相似性, 而派生类表示差异性 ; - 通过参数化类型增强可移植性 : 参数化类型使应用与对特定的网络编程接口的依赖去耦合, 模板提供的类型抽象改善了支持不同网络编程接口 ( 比如 Socket 或 TLI) 的平台间的可移植性 ; - 内联性能关键的方法 : C++ 内联函数的使用以消除运行时函数调用开销 ; - 定义辅助类隐藏易错细节 : Addr 层次消除了与直接使用基于 C 的 struct sockaddr 数据结构族相关联的常见编程错误. 如 : ACE_INET_Addr 的构造器自动将 sockaddr 寻址结构清零, 并将端口号转换为网络字节序. 16
17 SOCK SAP 通信过程 ACE_SOCK 的通信过程一般为如下步骤 : 1 服务器绑定端口, 等待客户端连接 ; 2 客户端通过服务器的 ip 和服务器绑定的端口连接服务器 ; 3 服务器和客户端通过网络建立一条数据通路, 通过这条数据通路进行数据交互. 1. ACE_INET_Addr 类是 ACE_Addr 的子类, 表示 TCP/IP 和 UDP/IP 的地址. 它通常包含机器的 IP 地址和端口号. 定义方法 : ACE_INET_Addr addr(3000," "); 2. ACE_SOCK_Acceptor 类服务期端使用, 用于绑定端口和被动地接受连接. 常用方法 : open() 绑定端口, accept() 建立和客户段的连接 3. ACE_SOCK_Connector 类客户端使用, 用于主动的建立和服务器的连接. 常用方法 : connect() 建立和服务器的连接 4. ACE_SOCK_Stream 类客户端和服务器都使用, 表示客户段和服务器之间的数据通路. 常用方法 : send () 发送数据, recv () 接收数据, close() 关闭连接 ( 实际上就是断开了 socket 连接 ) 17
18 ACE Socket Server #include <ace/inet_addr.h> #include <ace/sock_stream.h> #include <ace/sock_acceptor.h> ACE_INET_Addr port_to_listen(3000, " "); ACE_SOCK_Acceptor acceptor; if (acceptor.open (port_to_listen, 1) == -1) // 绑定端口 cout<<endl<<"bind port fail"<<endl; return -1; // 要绑定的端口号 ACE_SOCK_Stream peer; // 和客户端的数据通路 ACE_Time_Value timeout (10, 0); // if (acceptor.accept (peer)!= -1) // 建立和客户端的连接 cout<<endl<<endl<<"client connect. "<<endl; char buffer[1024]; ssize_t bytes_received; ACE_INET_Addr raddr; peer.get_local_addr(raddr); cout<<endl<<"local port\t"<<raddr.get_host_name()<<"\t"<<raddr.get_port_number()<<endl; // raddr.get_ip_address()? while ((bytes_received = peer.recv (buffer, sizeof(buffer)))!= -1) // 读取客户端发送的数据 peer.send(buffer, bytes_received); // 对客户端发数据 peer.close (); 18
19 19 ACE Socket Client ACE_INET_Addr addr(3000," "); ACE_SOCK_Connector connector; ACE_Time_Value timeout(5,0); ACE_SOCK_Stream peer; if(connector.connect(peer,addr,&timeout)!= 0) cout<<"connection failed!"<<endl; return 1; cout<<"conneced!"<<endl; string s="hello world"; peer.send(s.c_str(),s.length()); // 发送数据 cout<<endl<<"send:\t"<<s<<endl; ssize_t bc=0; // 接收的字节数 char buf[1024]; bc=peer.recv(buf,1024,&timeout); // 接收数据 if(bc>=0) buf[bc]='\0'; cout<<endl<<"rev:\t"<<buf<<endl; // 显示数据 peer.close();
20 ACE Socket Addressing Classes Class Capabilities The ACE_Addr class is the root of the ACE network addressing hierarchy The ACE_INET_Addr class represents TCP/IP & UDP/IP addressing information This class eliminates many subtle sources of accidental complexity
21 使用 ACE_SOCK_Connector #include <ace/inet_addr.h> #include <ace/sock_stream.h> #include <ace/sock_connector.h> #include <ace/time_value.h> ACE_INET_Addr srvr (5000, ACE_LOCALHOST); ACE_SOCK_Connector connector; ACE_SOCK_Stream peer; if(connector.connect(peer,addr,&timeout)!= 0) cout<<"connection failed!"<<endl; return 1; cout<<"conneced!"<<endl;
22 使用 ACE_SOCK_Stream #include <ace/inet_addr.h> #include <ace/sock_stream.h> #include <ace/sock_acceptor.h> #include <ace/time_value.h> unsigned short portnumber = 5000; ACE_INET_Addr myaddress(portnumber); ACE_SOCK_Acceptor acceptor; ACE_SOCK_Stream peer; string s="hello world"; peer.send(s.c_str(),s.length()); // 发送数据 cout<<endl<<"send:\t"<<s<<endl; ssize_t bc=0; // 接收的字节数 char buf[1024]; bc=peer.recv(buf,1024,&timeout); // 接收数据
23 使用 ACE_SOCK_Acceptor #include <ace/inet_addr.h> #include <ace/sock_stream.h> #include <ace/sock_acceptor.h> #include <ace/time_value.h> if (acceptor.accept (peer)!= -1) // 成功建立和客户端的连接 cout<<endl<<endl<<"client connect. "<<endl; char buffer[1024]; ssize_t bytes_received; ACE_INET_Addr raddr; peer.get_local_addr(raddr); cout<<endl<<"local port\t"<<ace_uint32(raddr.get_ip_address()) <<"\t"<<raddr.get_port_number()<<endl; // raddr.get_host.address() while ((bytes_received = peer.recv (buffer, sizeof(buffer)))!= -1) // 读取客户端发送的数据 peer.send(buffer, bytes_received); // 对客户端发数据
24 使用 ACE 的 UDP 类进行网络编程 ACE_SOCK_CODgram ACE_Asynch_Read_Dgram ACE_Asynch_Write_Dgram ACE_SOCK_Dgram 和 TCP 编程相比, UDP 无需通过 acceptor, connector 来建立连接, 故代码相对 TCP 编程来说要简单许多. 另外, 由于 UDP 是一种无连接的通信方式, ACE_SOCK_Dgram 的实例对象中无法保存远端地址信息 ( 保存了本地地址信息 ), 故通信的时候需要加上远端地址信息. UDP 通信过程如下 : 1 服务器端绑定一固定 UDP 端口, 等待接收客户端的通信 ; 2 客户端通过服务器的 IP 和地址信息直接对服务器端发送消息 ; 3 服务器端收到客户端发送的消息后获取客户端的 IP 和端口号, 通过该地址信息和客户端通信.
25 #include <ace/sock_dgram.h> #include <ace/inet_addr.h> #include <ace/time_value.h> #include <string> #include <iostream> using namespace std; UDP Server 例子 int main(int argc, char *argv[]) ACE_INET_Addr port_to_listen(3000); // 要绑定的端口 ACE_SOCK_Dgram peer(port_to_listen); // 通信通道 char buf[100]; while(true) ACE_INET_Addr remoteaddr; // 所连接的远程地址 int bc = peer.recv(buf,100,remoteaddr); // 接收消息, 并获取远程地址信息 if( bc!= -1) string s(buf,bc); cout<<endl<<"rev:\t"<<s<<endl; peer.send(buf,bc,remoteaddr); // 和远程地址通信 return 0; 25
26 26 UDP Client 例子 #include <ace/sock_dgram.h> #include <ace/inet_addr.h> #include <ace/time_value.h> #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]) ACE_INET_Addr remoteaddr(3000," "); // 所连接的远程地址 ACE_INET_Addr localaddr; // 本地地址信息 ACE_SOCK_Dgram peer(localaddr); // 通信通道 peer.send("hello",5,remoteaddr); // 发送消息 char buf[100]; int bc = peer.recv(buf,100,remoteaddr); // 接收消息 if( bc!= -1) string s(buf,bc); cout<<endl<<"rev:\t"<<s<<endl; return 0;
27 27 单播 (Unicast) 单播与 TCP 类似, 是一种一对一操作. 与 TCP 通信两点主要的不同 : 你只需要打开使用 ACE_SOCK_Dgram. 不需要使用接受器和连接器. 在发送数据报时, 你需要显式地指定对端的地址.
28 #include "ace/os.h" #include "ace/log_msg.h" #include "ace/inet_addr.h" #include "ace/sock_dgram.h" 使用单播 (Unicast) int send_unicast (const ACE_INET_Addr &to) const char *message = "this is the message!\n"; ACE_INET_Addr my_addr (ACE_static_cast (u_short, 10101)); ACE_SOCK_Dgram udp (my_addr); ssize_t sent = udp.send (message, ACE_OS_String::strlen (message) + 1, to); udp.close (); if (sent == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("send")), -1); return 0;
29 29 广播 (Broadcast) 在广播模式中, 你必须为每个发送操作指定目的地址. ACE_SOCK_Dgram_Bcast 类负责为你提供正确的 IP 广播地址. 你只需要指定要用于广播的 UDP 端口号. 因为 ACE_SOCK_Dgram_Bcast 是 ACE_SOCK_Dgram 的子类, 所以全部数据报接收操作与单播的操作都是相似的.
30 使用广播 (Broadcast) #include "ace/os.h" #include "ace/log_msg.h" #include "ace/inet_addr.h" #include "ace/sock_dgram_bcast.h" int send_broadcast (u_short to_port) const char *message = "this is the message!\n"; ACE_INET_Addr my_addr (ACE_static_cast (u_short, 10101)); ACE_SOCK_Dgram_Bcast udp (my_addr); ssize_t sent = udp.send (message, ACE_OS_String::strlen (message) + 1, to_port); udp.close (); if (sent == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("send")), -1); return 0;
31 多播 (Multicast) 多播模式涉及到称为多播组的一组网络节点. OS 提供的底层协议软件会使用专门的协议管理多播组. OS 会根据应用是请求加入 ( 订阅 ) 还是离开 ( 取消订阅 ) 特定的多播组来指挥组的操作. 一旦应用加入了某个组, 在已加入的 socket 上发送的所有数据报都会发往该多播组, 而且不用指定每个发送操作的目的地址. 每个多播组都有一个单独的 IP 地址. 多播地址是 D 类 IP 地址. 如 : D 类地址范围 : 到 ACE_SOCK_Dgram_Mcast 也是 ACE_SOCK_Dgram 的子类, 因此 recv() 方法也是从 ACE_SOCK_Dgram 继承来的. 如 : ssize_t recv_cnt = udp.recv(buff, buflen, your_addr);
32 return 0; 使用多播 (Multicast) #include "ace/os.h" #include "ace/log_msg.h" #include "ace/inet_addr.h" #include "ace/sock_dgram_mcast.h" int send_multicast (const ACE_INET_Addr &mcast_addr) const char *message = "this is the message!\n"; ACE_SOCK_Dgram_Mcast udp; if (-1 == udp.join (mcast_addr)) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("join")), -1); ssize_t sent = udp.send (message, ACE_OS_String::strlen (message) + 1); udp.close (); if (sent == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%p\n"), ACE_TEXT ("send")), -1);
33 33 其他通信方式 一 Files ACE_FILE_IO ACE_FILE_Connector ACE_FILE_Addr 二 Pipes and FIFOs ACE_FIFO_Recv, ACE_FIFO_Send, ACE_FIFO_Recv_Msg, ACE_FIFO_Send_Msg ACE_Pipe ACE_SPIPE_Acceptor, ACE_SPIPE_Connector, ACE_SPIPE_Stream, ACE_SPIPE_Addr 三 Shared Memory Stream ACE_MEM_Acceptor ACE_MEM_Connector ACE_MEM_Stream ACE_MEM_Addr
34 内容回顾 如何访问 OS 服务 TCP/IP Socket 编程接口 使用 ACE 的 UDP 类进行网络编程 单播 广播 多播
35 参考资料 Patterns & frameworks for concurrent & networked objects ACE & TAO open-source middleware ACE research papers Extended ACE & TAO tutorials UCLA extension, January 21-23, ACE books
36 结束 谢谢大家!
untitled
Lwip Swedish Institute of Computer Science February 20, 2001 Adam Dunkels [email protected] (QQ: 10205001) (QQ: 329147) (QQ:3232253) (QQ:3232253) QQ ARM TCPIP LCD10988210 LWIP TCP/IP LWIP LWIP lwip API lwip
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
Slide 1
网络编程入门篇 利用 socket 实现 TCP 服务器 目录 基础知识 具体示例 示例代码讲解 基础知识 基础知识 socket 编程一般采用客户端 - 服务器模式 ( 即由客户进程向服务器进程发出请求, 服务器进程执行请求的任务并将执行结果返回给客户进程的模式 ) 今天我们要讲的就是如何利用 socket 编程实现基于 TCP 协议通信的服务器 首先我们先向大家展示 socket 编程的流程,
Chapter 5- 运输层 (5)-2017
计算机网络 运输层编程 (5) 陈旺虎 [email protected] Review TCP 协议格式 TCP 可靠传输 为什么需要三次握手? A 发送一次确认的原因 应对出现 已失效的连接请求报文段 的情况, 即防止已失效的连接请求报文段突然又传到了 B 例 1:A 发出连接请求, 但该请求丢失,A 重传连接请求, 到达 B, 则正常 ; 一. 认识 Socket 应用层程序 流套接字接口
Chapter #
第三章 TCP/IP 协议栈 本章目标 通过本章的学习, 您应该掌握以下内容 : 掌握 TCP/IP 分层模型 掌握 IP 协议原理 理解 OSI 和 TCP/IP 模型的区别和联系 TCP/IP 介绍 主机 主机 Internet TCP/IP 早期的协议族 全球范围 TCP/IP 协议栈 7 6 5 4 3 应用层表示层会话层传输层网络层 应用层 主机到主机层 Internet 层 2 1 数据链路层
C/C++ - 文件IO
C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;
Microsoft PowerPoint - Socket programming.ppt [相容模式]
Basic Concept of Socket Socket programming 位於傳輸層和應用層之間 socket 是一種可做雙向資料傳輸的通道 讓應用層可以傳送資料給 socket, 或是從 socket 接收資料 Jimmy 2011/3/29 Concept of Socket Relation between Socket and Application Socket 的概念和檔案代碼觀念相似,
/ / (FC 3)...
Modbus/TCP 1.0 1999 3 29 Andy Swales Schneider [email protected] ... 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
Basics of Socket Programming Please check the referenced links for the further description and examples. 1 Procedures for Socket Implementation 1. Create the server application (e.g. a simple shellscript)
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
2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d
2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,
Chap04
Socket 编程介绍 Socket Socket 网络编程 按照操作系统 Windows 的 socket 编程 *nix 的 socket 编程 按照编程语 言 使 用C++ Java 的 socket 编程 使 用脚本语 言的 socket 编程 Socket 的 一些历史 Sockets 本来是 UNIX 操作系统下流 行行的 一种 网络编程接 口 (API), 在 4.2 BSD 中被 首先引
(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
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++ ([email protected]) 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
嵌入式Linux块设备驱动开发解析
The success's road 嵌 入 式 LINUX 网 络 驱 动 开 发 Copyright 2007-2008 Farsight. All rights reserved. 要 点 Linux 网 络 设 备 驱 动 程 序 概 述 计 算 机 网 络 概 述 skbuf 数 据 结 构 介 绍 Linux 网 络 设 备 驱 动 程 序 API 介 绍 Linux 网 络 设 备 驱
C/C++程序设计 - 字符串与格式化输入/输出
C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int
华清远见就业优势倍增项目手册
Linux 网络编程 曾宏安 1. Internet 与 TCP/IP 协议 1 2 3 4 Internet 历史 OSI 模型与 TCP/IP 协议体系结构 TCP/IP 协议 TCP 和 UDP 协议 Internet 的历史 } Internet- 冷战 的产物 } 1957 年 10 月和 11 月, 前苏联先后有两颗 Sputnik 卫星上天 } 1958 年美国总统艾森豪威尔向美国国会提出建立
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1
C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,
Slide 1
网络编程入门篇 Select: 非阻塞 Socket 编程 目录 基础知识 具体示例 注意事项 示例代码讲解 基础知识 基础知识 在 RT-Thread 使用 socket 网络编程时, 由于 socket 的 recv 和 send 的实现是阻塞式的, 因此当一个任务调用 recv() 函数接收数据时, 如果 socket 上并没有接收到数据, 这个任务将阻塞在 recv() 函数里 这个时候,
引言 ftp 工作原理 FTP 客户端思考练习 要点回顾 1 ip 地址结构 2 字节顺序转换函数 3 IP 格式转换函数 2 / 29
引言 ftp 工作原理 FTP 客户端思考练习 网络程序设计 (FTP) 孙永科 西南林业大学 2010 年 9 月 17 日 1 / 29 引言 ftp 工作原理 FTP 客户端思考练习 要点回顾 1 ip 地址结构 2 字节顺序转换函数 3 IP 格式转换函数 2 / 29 引言 ftp 工作原理 FTP 客户端思考练习 本节重点 1 ftp 工作原理数据分析 TCPdump 过程分析 wireshark
C 1 # include <stdio.h> 2 int main ( void ) { 4 int cases, i; 5 long long a, b; 6 scanf ("%d", & cases ); 7 for (i = 0;i < cases ;i ++) 8 { 9
201 201 21 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp Compilation Error long long cin scanf Time Limit Exceeded 1: A 1 B 1 C 5 D RPG 10 E 10 F 1 G II 1 1 201 201 C 1 # include 2 int main ( void
epub 61-2
2 Web Dreamweaver UltraDev Dreamweaver 3 We b We b We Dreamweaver UltraDev We b Dreamweaver UltraDev We b We b 2.1 Web We b We b D r e a m w e a v e r J a v a S c r i p t We b We b 2.1.1 Web We b C C +
第3章.doc
3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo
C
C 14 2017 5 31 1. 2. 3. 4. 5. 2/101 C 1. ( ) 4/101 C C ASCII ASCII ASCII 5/101 C 10000 00100111 00010000 ASCII 10000 31H 30H 30H 30H 30H 1 0 0 0 0 0 ASCII 6/101 C 7/101 C ( ) ( ) 8/101 C UNIX ANSI C 9/101
FY.DOC
高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主
第一章 概论
1 2 3 4 5 6 7 8 Linux 7.1 7.1.1 1 1 2 3 2 3 1 2 3 3 1 2 3 7.1.2 1 2 1 2 3 4 5 7.1.3 1 1 2 3 2 7.1 3 7.1.4 1 1 PCB 2 3 2 PCB PCB PCB PCB PCB 4 1 2 PSW 3 CPU CPU 4 PCB PCB CPU PCB PCB PCB PCB PCB PCB PCB
C 1
C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=
Microsoft PowerPoint - os_4.ppt
行 程 資 科 系 林 偉 川 行 程 概 念 行 程 與 程 式 主 要 的 不 同 點 : 程 式 是 被 放 在 外 部 的 儲 存 裝 置 如 磁 碟 上, 而 行 程 則 被 放 在 記 憶 體 中 程 式 在 儲 存 裝 置 中 是 靜 態 的, 而 行 程 在 記 憶 體 中 是 動 態 的, 它 會 隨 著 一 些 事 件 的 發 生 而 產 生 相 對 的 改 變 行 程, 就 是
网络程序设计(socketAPI)
前言通信模型重要函数 网络程序设计 (socketapi) 孙永科 西南林业大学 2010 年 9 月 6 日 1 / 40 上节回顾 前言通信模型重要函数上节回顾本章重点 阻塞和非阻塞 socket 通信模型大字节顺序小字节顺序网络字节顺序 2 / 40 本章重点 前言通信模型重要函数上节回顾本章重点 1 通信模型基本概念 Socket 通信 Socket 地址 Socket 函数 2 重要函数获取主机信息
新版 明解C++入門編
511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,
Microsoft PowerPoint - 数据通信-ch1.ppt
主 要 内 容 与 基 本 要 求 主 要 内 容 数 据 通 信 与 计 算 机 网 络 计 算 机 网 络 的 发 展 过 程 分 类 以 及 主 要 性 能 指 标 ; 分 组 交 换 的 基 本 原 理 及 其 与 电 路 交 换 报 文 交 换 的 联 系 与 区 别 ; 计 算 机 网 络 的 协 议 与 体 系 结 构 第 1 章 概 述 基 本 要 求 掌 握 分 组 交 换 电 路
经华名家讲堂
5.1 5.1.1 5.1.2 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.3 5.3.1 5.3.2 5.3.3 / 5.3.4 / 5.3.5 / 5.4 Internet 5.4.1 Internet 5.4.2 Intranet 1. 2. 1 31 5 5.1 5.1.1 Internet 1 Host 20 60 IBM 2000 2 20 60 20 60
一个开放源码的嵌入式仿真环境 ― SkyEye
SkyEye SkyEye http://hpclab.cs.tsinghua.edu.cn/~skyeye/ I hear and I forget, I see and I remember, I do and I understand. SkyEye SkyEye SkyEye SkyEye SkyEye 1. SkyEye PC pervasive computing PC I O PDA
Symantec™ Sygate Enterprise Protection 防护代理安装使用指南
Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate
提问袁小兵:
C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.
Linux网络编程socket错误分析
Linux 网 络 编 程 socket 错 误 分 析 socket 错 误 码 : EINTR: 4 阻 塞 的 操 作 被 取 消 阻 塞 的 调 用 打 断 如 设 置 了 发 送 接 收 超 时, 就 会 遇 到 这 种 错 误 只 能 针 对 阻 塞 模 式 的 socket 读, 写 阻 塞 的 socket 时,-1 返 回, 错 误 号 为 INTR 另 外, 如 果 出 现 EINTR
ebook15-10
1 0 10.1 U N I X V 7 4. 3 B S D S V R 3 P O S I X. 1 100 % 10.2 S I G S I G A B RT a b o r t S I G A L R M a l a r m V 7 1 5 S V R 4 4. 3 + B S D 31 < s i g n a l. h > 0 10. 9 k i l l 0 P O S I X. 1 D
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
C++ 程式設計
C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004
ebook15-12
1 2I / O 12.1 I / O V I / O s e l e c tp o l l r e a d vw r i t e v I / Om m a p 14 15 12.2 I / O 1 0. 5 F I F O F I F O i o c t l 14 I / O I / o p e n, r e a dw r i t e I / O (1) o p e n O _ N O N B L
untitled
1 DBF (READDBF.C)... 1 2 (filetest.c)...2 3 (mousetes.c)...3 4 (painttes.c)...5 5 (dirtest.c)...9 6 (list.c)...9 1 dbf (readdbf.c) /* dbf */ #include int rf,k,reclen,addr,*p1; long brec,erec,i,j,recnum,*p2;
Socket Programming in the Banking Collection Service Counter System
Socket Programming in the Banking Collection Service Counter System Gang WANG Hubei Radio and TV University, Wuhan, China Email: [email protected] Abstract: This paper describes the use of TCP / IP programming
ebook15-C
C 1 1.1 l s ( 1 ) - i i 4. 14 - d $ l s -ldi /etc/. /etc/.. - i i 3077 drwxr-sr-x 7 bin 2048 Aug 5 20:12 /etc/./ 2 drwxr-xr-x 13 root 512 Aug 5 20:11 /etc/../ $ls -ldi /. /..... i 2 2 drwxr-xr-x 13 root
untitled
A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (
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
epub 33-8
8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE
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
1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File
51 C 51 51 C C C C C C * 2003-3-30 [email protected] C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test
目录 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
static struct file_operations gpio_ctl_fops={ ioctl: gpio_ctl_ioctl, open : gpio_open, release: gpio_release, ; #defineled1_on() (GPBDAT &= ~0x1) #def
Kaise s 2410 Board setting [1]. Device Driver Device Driver Linux s Kernel ARM s kernel s3c2410_kernel2.4.18_r1.1_change.tar.bz2 /usr/src (1) #cd /usr/src (2) #tar xfj s3c2410_kernel2.4.18_r1.1_change.tar.bz2
C/C++语言 - C/C++数据
C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;
Go构建日请求千亿微服务最佳实践的副本
Go 构建 请求千亿级微服务实践 项超 100+ 700 万 3000 亿 Goroutine & Channel Goroutine Channel Goroutine func gen() chan int { out := make(chan int) go func(){ for i:=0; i
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
第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特 网 的 标 准 化 工 作 1.2.4 计 算 机 网 络 在
计 算 机 网 络 ( 第 4 版 ) 课 件 第 1 章 计 算 机 网 络 概 述 郭 庆 北 [email protected] 2009-02-25 第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特
第7章-并行计算.ppt
EFEP90 10CDMP3 CD t 0 t 0 To pull a bigger wagon, it is easier to add more oxen than to grow a gigantic ox 10t 0 t 0 n p Ts Tp if E(n, p) < 1 p, then T (n) < T (n, p) s p S(n,p) = p : f(x)=sin(cos(x))
Microsoft Word - 实用案例.doc
计 算 机 系 统 应 用 2009 年 第 12 期 嵌 入 式 Linux 下 温 湿 度 传 感 器 的 设 计 与 实 现 1 Design and Implementation of Temperature and Humidity Sensor Based on Embedded Linux 陈 博 刘 锦 高 ( 华 东 师 范 大 学 电 子 科 学 技 术 系 上 海 200241)
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
概述
OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3
BYOD IP+Optical (IP NGN) API 4. End-to-End (Service Aware) 5. IP NGN (IP Next Generation Network) ( ) Prime Carrier Management Access Edge Co
BYOD 228 2015 IT open source DIY ( ) Up/Down HP NNMi WhatsUp Gold Nagios HP SiteScope WhatsUp Gold HP NNMi WhatsUp Gold Cacti MRTG HP ispi Performance for Metrics WhatsUp Gold ( ) Open source Agent End-to-End
Linux網路傳輸設定
Linux 網路傳輸設定 南台科技大學電子系 指導老師 : 侯安桑 班級 : 電子碩研一甲 學號 :M9830205 姓名 : 張嘉巖 Android 網路傳輸設定已經完成後, 接下來要開始設定 linux 網路傳輸, 目標是要將 linux 當作 server 端來設計, 使用的程式語言為 C 語言, 此作法會比 android 來的簡單許多, 只要顧慮程式流程和邏輯觀念是否正確即可, 下面會介紹
How to Debug Tuxedo Server printf( Input data is: %s, inputstr); fprintf(stdout, Input data is %s, inputstr); fprintf(stderr, Input data is %s, inputstr); printf( Return data is: %s, outputstr); tpreturn(tpsuccess,
(HMI) IO A
6.5 6.5 (HMI) IO 6.52 6.52 6.5 2007 113 A 602 100086 010 82616619 010 62638166 www.kingview.com 4 7 25 38 43 52 63 68 86 SQL 95 99 WEB 105 Web Web Web I/O Microsoft Windows XP/NT/2000 I/O PLC PLC PLC PLC
, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1
21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414
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
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
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
<4D6963726F736F667420506F776572506F696E74202D2030325FC2B2B3F85FA44AAB49B0BBB4FABB50B977A8BEA874B2CEC2B2A4B6BB50C0B3A5CE2E707074>
入 侵 偵 測 與 預 防 系 統 簡 介 與 應 用 蕭 翔 之 講 師 BS 7799 LA 課 程 大 綱 第 一 章 認 識 入 侵 偵 測 與 預 防 系 統 第 二 章 入 侵 偵 測 與 預 防 系 統 的 功 能 分 類 偵 測 技 術 第 三 章 入 侵 偵 測 與 預 防 系 統 部 署 架 構 第 四 章 入 侵 偵 測 與 預 防 系 統 的 應 用 效 益 第 五 章 結
財金資訊-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
TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP
TCP/IP : TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP 1. ASCII EBCDIC Extended Binary-Coded Decimal Interchange Code 2. / (1) (2) Single System Image SSI) (3) I/O (4) 3.OSI OSI Open System Interconnection
新・明解C言語入門編『索引』
!... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177
目录 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
27 :OPC 45 [4] (Automation Interface Standard), (Costom Interface Standard), OPC 2,,, VB Delphi OPC, OPC C++, OPC OPC OPC, [1] 1 OPC 1.1 OPC OPC(OLE f
27 1 Vol.27 No.1 CEMENTED CARBIDE 2010 2 Feb.2010!"!!!!"!!!!"!" doi:10.3969/j.issn.1003-7292.2010.01.011 OPC 1 1 2 1 (1., 412008; 2., 518052), OPC, WinCC VB,,, OPC ; ;VB ;WinCC Application of OPC Technology
