资源描述:
《基本UDP套接口编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基本UDP套接口编程.txt爱情是艺术,结婚是技术,离婚是算术。这年头女孩们都在争做小“腰”精,谁还稀罕小“腹”婆呀?高职不如高薪,高薪不如高寿,高寿不如高兴。基本UDP套接口编程--------------------------------------------------------------------------------第八军团时间:2004-1-1721:32:27概述UDP无连接的connectionless不可靠的unreliable数据报协议datagram应用:DNS,NFS,SNMP,ICQTC
2、P面向连接的connection-oriented可靠的reliable字节流协议bytestream应用:www,telnet,ftp--------------------------------------------------------------------------------UDP客户-服务器程序的套接口函数recvfrom和sendto函数#includessize_trecvfrom(intsockfd,void*buff,sizenbytes,intflags,struc
3、tsockaddr*from,socklen_t*addrlen);sockfd:描述字buff:指向输入缓冲器的指针nbytes:读字节大小flag:标志:0from:对方协议地址addrlen:对方协议地址长度函数返回值:读入数据的长度,可以为0.ssize_tsendto(intsockfd,void*buff,sizenbytes,intflags,conststructsockaddr*to,socklen_t*addrlen);TCP的字节流输入输出函数:ssize_treadn(intsockfd,void*b
4、uff,sizenbytes);ssize_twriten(intsockfd,void*buff,sizenbytes);--------------------------------------------------------------------------------UDP回射服务器程序//服务器main主程序#include"unp.h"Intmain(intargc,char**argv){intsockfd;//定义套接字structsockaddr_inservaddr,cliaddr;//IPv4套
5、接口地址定义sockfd=Socket(AF_INET,SOCK_DGRAM,0);//建立UDP套接字bzero(&servaddr,sizeof(servaddr));//地址结构清零servaddr.sin_family=AF_INET;//IPv4协议servaddr.sin_addr.s_addr=htonl(INADDR_ANY);//内核指定地址servaddr.sin_port=htons(SERV_PORT);//9877端口/*分配协议地址,绑定端口*/Bind(sockfd,(SA*)&servaddr
6、,sizeof(servaddr));/*回射子程序*/dg_echo(sockfd,(SA*)&cliaddr,sizeof(cliaddr));}回射子程序:include"unp.h"voiddg_echo(intsockfd,SA*pcliaddr,socklen_tclilen){intn;//读入字节数socklen_tlen;//协议地址长度,没有这个参数用clilen也可以charmesg[MAXLINE];for(;;){len=clilen;/*读入一行*/n=Recvfrom(sockfd,mesg,M
7、AXLINE,0,pcliaddr,&len);/*回射到对方套接口*/Sendto(sockfd,mesg,n,0,pcliaddr,len);}}--------------------------------------------------------------------------------UDP回射客户程序//客户main主程序include"unp.h"intmain(intargc,char**argv)//命令行的第二个参数代表服务器地址{intsockfd;//套接字structsockaddr_
8、inservaddr;//服务器地址结构/*必须在命令行指定服务器地址*/if(argc!=2)err_quit("usage:udpcli");bzero(&servaddr,sizeof(servaddr));//地址结构清零servaddr.sin_family