第10章 Linux网络编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:58 大小:1.2MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第10章 Linux网络编程.ppt

第10章Linux网络编程.ppt

预览

免费试读已结束,剩余 48 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第10章Linux网络编程TCP/IP协议概述OSI参考模型及TCP/IP参考模型OSI参考模型及TCP/IP参考模型TCPUDP协议的选择第10章Linux网络编程网络基础编程socket概念Socket相关数据结构协议族字节顺序转化地址格式转化(1)点分十进制转换化为二进制地址格式转化(2)名字地址转化(1)名字地址转化(2)名字地址转化(3)名字地址转化(4)网络基础编程函数说明(1)函数说明(2)socket()函数bind()函数listen()函数accept()函数connect()函数send()函数recv()函数sendto()函数recvfrom()函数TCP协议的流程图UDP协议的流程图/*server.c*/#definePORT4321#defineBUFFER_SIZE1024#defineMAX_QUE_CONN_NM5intmain(){structsockaddr_inserver_sockaddr,client_sockaddr;intsin_size,recvbytes;intsockfd,client_fd;charbuf[BUFFER_SIZE];/*建立socket连接*/if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("socket");exit(1);}printf("Socketid=%d\n",sockfd);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));if(bind(sockfd,(structsockaddr*)&server_sockaddr,sizeof(structsockaddr))==-1){perror("bind");exit(1);}printf("Bindsuccess!\n");if(listen(sockfd,MAX_QUE_CONN_NM)==-1){perror("listen");exit(1);}printf("Listening....\n");if((client_fd=accept(sockfd,(structsockaddr*)&client_sockaddr,&sin_size))==-1){perror("accept");exit(1);}memset(buf,0,sizeof(buf));if((recvbytes=recv(client_fd,buf,BUFFER_SIZE,0))==-1){perror("recv");exit(1);}printf("Receivedamessage:%s\n",buf);close(sockfd);exit(0);}/*client.c*/#definePORT4321#defineBUFFER_SIZE1024intmain(intargc,char*argv[]){intsockfd,sendbytes;charbuf[BUFFER_SIZE];structhostent*host;structsockaddr_inserv_addr;if(argc<3){fprintf(stderr,"USAGE:./clientHostname(oripaddress)Text\n");exit(1);}/*地址解析函数*/if((host=gethostbyname(argv[1]))==NULL){perror("gethostbyname");exit(1);}memset(buf,0,sizeof(buf));sprintf(buf,"%s",argv[2]);if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){perror("socket");exit(1);}serv_addr.sin_family=AF_INET;serv_addr.si