TCPIPLinux2 Telnet FTP SMTP DNS SNMP RIP ICMP

  • Slides: 21
Download presentation

TCP/IP和Linux网络简介-2 Telnet FTP SMTP DNS SNMP 应用层 表示层 RIP 传输控制协议 用户数据报协议 ICMP 会话层 传输层

TCP/IP和Linux网络简介-2 Telnet FTP SMTP DNS SNMP 应用层 表示层 RIP 传输控制协议 用户数据报协议 ICMP 会话层 传输层 ARP 网际互联协议 网络层 数据链路层 物理层 Chavezwang@gmail. com Ethernet Token bus Token ring IEE 802. 3 IEE 802. 4 嵌入式研究室计算机学院嵌入式研究室 FDDI IEE 802. 5 ANSIX 3 T 95 44

套接口编程基础-3 n 第二步进行绑定,将一个进程与一个套接口联系 起来 bind(int socket, struct sockaddr *my_addr, int my_addr_length) q q 第一个参数是socket函数的返回的套接口值。

套接口编程基础-3 n 第二步进行绑定,将一个进程与一个套接口联系 起来 bind(int socket, struct sockaddr *my_addr, int my_addr_length) q q 第一个参数是socket函数的返回的套接口值。 第二个参数是sockaddr地址,如下定义: Struct sockaddr{ unsigned short sa_family; //AF_UNIX, AF_INET, AF_IPX char sa_data[14]; }; q 接口sockaddr必须被分配并作为第二个参数传递给函 数bind Chavezwang@gmail. com 嵌入式研究室计算机学院嵌入式研究室 11

套接口编程基础-9 n n 客户端的例子 对结构体sockaddr_in的数据pin赋值 bzero(&pin, sizeof(pin)); Pin. sin_family=AF_INET; Pin. sin_addr. s_addr=htonl(INADDR_ANY) Pin. sin_addr.

套接口编程基础-9 n n 客户端的例子 对结构体sockaddr_in的数据pin赋值 bzero(&pin, sizeof(pin)); Pin. sin_family=AF_INET; Pin. sin_addr. s_addr=htonl(INADDR_ANY) Pin. sin_addr. s_addr=((struct in_addr *)(server_host_name->addr))->s_addr; Pin. sin_port=htons(port); Socket_descriptor=socket(AF_INET, SOCK_STREAM, 0); Connect(socket_descriptor, (void *)&pin, sizeof(pin)); Send(socket_descriptor, strlen(str), 0) Close(socket_descriptor); Chavezwang@gmail. com 嵌入式研究室计算机学院嵌入式研究室 17

创建结构体 struct sockaddr_in sin; struct sockaddr_in pin; int sock_descriptor; int temp_sock_descriptor; int address_size; n

创建结构体 struct sockaddr_in sin; struct sockaddr_in pin; int sock_descriptor; int temp_sock_descriptor; int address_size; n 定义套接口描述字: sock_descriptor = socket(AF_INET, SOCK_STREAM, 0); n 填写结构sockaddr_in 必要的域sin: bzero(&sin, sizeof(sin)); sin_family=AF_INET; sin_addr. s_addr=INADDR_ANY; sin_port=htons(8000); //使用端口 8000 n

使用函数bind将套接口与端口 8000连在一起 bind(sock_descriptor, (struct sockaddr *)&sin, sizeof(sin)); n 监听连接到 8000端口的新套接字 listen(sock_descriptor, 20); //容纳 20个连接的队列

使用函数bind将套接口与端口 8000连在一起 bind(sock_descriptor, (struct sockaddr *)&sin, sizeof(sin)); n 监听连接到 8000端口的新套接字 listen(sock_descriptor, 20); //容纳 20个连接的队列 n n 客户机的例子程序