C语言中send()函数和sendto()函数的使用方法
C语言send()函数:经socket传送数据 #include <sys/types.h> #include <sys/socket.h> 定义函数: int send(int s,const void * msg,int len,unsigned int falgs); 函数说明:send()用来将数据由指定的socket 传给对方主机. 参数s 为已建立好连接的socket. 参数msg 指向欲连线的数据内容,参数len 则为数据长度. 参数flags 一般设0,其他数值定义如下: 返回值:成功则返回实际传送出去的字符数,失败返回-1. 错误原因存于errno 错误代码:
#include <sys/types.h> #include <sys/socket.h> 定义函数:int sendto(int s,unsigned int flags,const struct sockaddr * to,int tolen); 函数说明:sendto() 用来将数据由指定的socket 传给对方主机. 参数s 为已建好连线的socket,如果利用UDP协议则不需经过连线操作. 参数msg 指向欲连线的数据内容,参数flags 一般设0,详细描述请参考send(). 参数to 用来指定欲传送的网络地址,结构sockaddr 请参考bind(). 参数tolen 为sockaddr 的结果长度. 返回值:成功则返回实际传送出去的字符数,失败返回-1,错误原因存于errno 中. 错误代码: 范例 #include <sys/types.h> #include <sys/socket.h> #include <netinet.in.h> #include <arpa.inet.h> #define PORT 2345 /*使用的port */ main() { int sockfd,len; struct sockaddr_in addr; char buffer[256]; //建立socket if(sockfd = socket(AF_INET,SOCK_DGRAM,0)) < 0) { perror ("socket"); exit(1); } //填写sockaddr_in 结构 bzero(&addr,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr = hton1(INADDR_ANY); if(bind(sockfd,&addr,sizeof(addr)) < 0) { perror("connect"); exit(1); } while(1) { bezro(buffer,sizeof(buffer)); len = recvfrom(socket,buffer,sizeof(buffer),&addr &addr_len); //显示client 端的网络地址 printf("receive from %sn ",inet_ntoa(addr.sin_addr)); //将字串返回给client 端 sendto(sockfd,len,addr_len); } }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |