如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
嵌入式应用程序设计第6章嵌入式Linux网络编程本章课程:6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.1TCP/IP概述6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程示例:根据使用gethostname()获取的主机名,调用GETADDRINFO()函数得到关于主机的相关信息,最后调用inet_ntop()函数讲主机的IP地址转换成字符串,以便显示到屏幕上/*设置addrinfo结构体中各参数*/hints.ai_flags=AI_CANONNAME;hints.ai_family=AF_UNSPEC;hints.ai_socktype=SOCK_DGRAM;hints.ai_protocol=IPPROTO_UDP;/*调用gethostname()函数获得主机名*/if((gethostname(host_name,MAXNAMELEN))==-1){perror("gethostname");exit(1);}/*调用getaddinfo函数*/rc=getaddrinfo("localhost",NULL,&hints,&res);if(rc!=0){perror("getaddinfo");exit(1);}else{addr=((structsockaddr_in*)(res->ai_addr))->sin_addr;inet_ntop(res->ai_family,&(addr.s_addr),addr_str,INET_ADDRSTRLEN);printf("Hostname:%s\nIPaddress:%s\n",res->ai_canonname,addr_str);}exit(0);}6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程6.2网络基础编程示例:分为客户端和服务器端,其中服务器端首先建立起SOCKET,然后与本地端口进行绑定,接着开始接受从客户端的连接请求并建立与它的连接,接下来,接受客户端发送的消息。客户端则在建立SOCKET之后调用CONNECT()函数来建立连接/*建立socket连接*/if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("socket");exit(1);}printf("Socketid=%d\n",sockfd);/*设置sockaddr_in结构体中相关参数*/server_sockaddr.sin_family=AF_INET;server_sockaddr.sin_port=htons(PORT);server_sockaddr.sin_addr.s_addr=INADDR_ANY;bzero(&(server_sockaddr.sin_zero),8);inti=1;/*允许重复使用本地地址与套接字进行绑定*/setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));/*绑定函数bind()*/if(bind(sockfd,(structsockaddr*)&server_sockaddr,sizeof(structsockaddr))==-1){perror("bind");exit(1);}printf("Bindsuccess!\n");/*调用listen()函数,创建未处理请求的队列*/if(listen(sockfd,MAX_QUE_CONN_NM)==-1){perror("listen");exit(1);}printf("Listening....\n");/*调用accept()函数,等待客户端的连接*/if((clie