《(14.4.1)--11.4NetworkSocke.ppt》由会员分享,可在线阅读,更多相关《(14.4.1)--11.4NetworkSocke.ppt(17页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Network SocketNetwork SocketNetwork socketWe choose the loopback network to connect to a network socket.The loopback network involves only one computer whick is usually called localhost.Its IP address is 127.0.0.1 that can be found in/etc/hosts.#include#include#include#include#include#include int ma
2、in()int server_sockfd,client_sockfd;int server_len,client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;server_sockfd=socket(AF_INET,SOCK_STREAM,0);server_address.sin_family=AF_INET;server_address.sin_addr.s_addr=inet_addr(“127.0.0.1”);server_address.sin_port=9734;Example:s
3、erver programserver2.c#include#include#include#include#include#include int main()int server_sockfd,client_sockfd;int server_len,client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;server_sockfd=socket(AF_INET,SOCK_STREAM,0);server_address.sin_family=AF_INET;server_address.
4、sin_addr.s_addr=inet_addr(“127.0.0.1”);server_address.sin_port=9734;server2.cExample:server program#include#include#include#include#include#include int main()int server_sockfd,client_sockfd;int server_len,client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;server_sockfd=so
5、cket(AF_INET,SOCK_STREAM,0);server_address.sin_family=AF_INET;server_address.sin_addr.s_addr=inet_addr(“127.0.0.1”);server_address.sin_port=9734;server2.cExample:server program server_len=sizeof(server_address);bind(server_sockfd,(struct sockaddr*)&server_address,server_len);listen(server_sockfd,5);
6、while(1)char ch;printf(server waitingn);client_len=sizeof(client_address);client_sockfd=accept(server_sockfd,(struct sockaddr*)&client_address,&client_len);read(client_sockfd,&ch,1);ch+;write(client_sockfd,&ch,1);close(client_sockfd);server2.cExample:server program server_len=sizeof(server_address);
7、bind(server_sockfd,(struct sockaddr*)&server_address,server_len);listen(server_sockfd,5);while(1)char ch;printf(server waitingn);client_len=sizeof(client_address);client_sockfd=accept(server_sockfd,(struct sockaddr*)&client_address,&client_len);read(client_sockfd,&ch,1);ch+;write(client_sockfd,&ch,1
8、);close(client_sockfd);server2.cExample:server program server_len=sizeof(server_address);bind(server_sockfd,(struct sockaddr*)&server_address,server_len);listen(server_sockfd,5);while(1)char ch;printf(server waitingn);client_len=sizeof(client_address);client_sockfd=accept(server_sockfd,(struct socka
9、ddr*)&client_address,&client_len);read(client_sockfd,&ch,1);ch+;write(client_sockfd,&ch,1);close(client_sockfd);server2.cExample:server program#include#include#include#include#include#include int main()int sockfd;int len;struct sockaddr_in address;/Address formatint result;char ch=A;sockfd=socket(AF
10、_INET,SOCK_STREAM,0);/Create a socketaddress.sin_family=AF_INET;address.sin_addr.s_addr=inet_addr(“127.0.0.1”);/Format conversionExample:client programclient2.caddress.sin_port=9734;len=sizeof(address);result=connect(sockfd,(struct sockaddr*)&address,len);if(result=-1)perror(oops:client2);exit(1);wr
11、ite(sockfd,&ch,1);read(sockfd,&ch,1);printf(char from server=%cn,ch);close(sockfd);exit(0);client2.cExample:client programaddress.sin_port=9734;len=sizeof(address);result=connect(sockfd,(struct sockaddr*)&address,len);if(result=-1)perror(oops:client2);exit(1);write(sockfd,&ch,1);read(sockfd,&ch,1);p
12、rintf(char from server=%cn,ch);close(sockfd);exit(0);client2.cExample:client programThe problem of byte orderDifferent computers support different byte orders.For example,Intel computers usually run in little endian mode,while Motorola computers often run in big endian mode.Thus,chaos is caused duri
13、ng information tansmission.Network byte order:the client and server both convert their internal integer representation mode into a standard mode,namely the network byte order,before tansmitting information.#include unsigned long int htonl(unsigned long int hostlong);unsigned short int htons(unsigned
14、 short int hostshort);unsigned long int ntohl(unsigned long int netlong);unsigned short int ntohs(unsigned short int netshort);#include#include#include#include#include#include int main()int server_sockfd,client_sockfd;int server_len,client_len;struct sockaddr_in server_address;struct sockaddr_in cli
15、ent_address;server_sockfd=socket(AF_INET,SOCK_STREAM,0);server_address.sin_family=AF_INET;server_address.sin_addr.s_addr=htonl(INADDR_ANY);server_address.sin_port=htons(9734);The sThe server changerver changeses to to network byte ordernetwork byte orderserver3.cExample:server programserver_len=size
16、of(server_address);bind(server_sockfd,(struct sockaddr*)&server_address,server_len);listen(server_sockfd,5);while(1)char ch;printf(server waitingn);client_len=sizeof(client_address);client_sockfd=accept(server_sockfd,(struct sockaddr*)&client_address,&client_len);read(client_sockfd,&ch,1);ch+;write(
17、client_sockfd,&ch,1);close(client_sockfd);server3.cExample:server program#include#include#include#include#include#include int main()int sockfd;int len;struct sockaddr_in address;int result;char ch=A;sockfd=socket(AF_INET,SOCK_STREAM,0);address.sin_family=AF_INET;The The clientclient chang changeses
18、to to network byte ordernetwork byte orderclient3.cExample:client programaddress.sin_addr.s_addr=inet_addr(“127.0.0.1”);/The return value of inet_addr is already in network byte orderaddress.sin_port=htons(9734);len=sizeof(address);result=connect(sockfd,(struct sockaddr*)&address,len);if(result=-1)perror(oops:client2);exit(1);write(sockfd,&ch,1);read(sockfd,&ch,1);printf(char from server=%cn,ch);close(sockfd);exit(0);client3.cExample:client programEmbedded Software DesignEmbedded Software Design