C语言中send()函数和sendto()函数的使用方法

C语言中send()函数和sendto()函数的使用方法

2023年7月15日发(作者:)

C语⾔中send()函数和sendto()函数的使⽤⽅法C语⾔send()函数:经socket传送数据头⽂件:#include #include 定义函数:int send(int s, const void * msg, int len, unsigned int falgs);函数说明:send()⽤来将数据由指定的socket 传给对⽅主机. 参数s 为已建⽴好连接的socket. 参数msg 指向欲连线的数据内容,参数len 则为数据长度. 参数flags ⼀般设0, 其他数值定义如下: MSG_OOB 传送的数据以out-of-band 送出. MSG_DONTROUTE 取消路由表查询 MSG_DONTWAIT 设置为不可阻断运作 MSG_NOSIGNAL 此动作不愿被SIGPIPE 信号中断.返回值:成功则返回实际传送出去的字符数, 失败返回-1. 错误原因存于errno错误代码: EBADF 参数s ⾮合法的socket 处理代码. EFAULT 参数中有⼀指针指向⽆法存取的内存空间 ENOTSOCK 参数s 为⼀⽂件描述词, ⾮socket. EINTR 被信号所中断. EAGAIN 此操作会令进程阻断, 但参数s 的socket 为不可阻断. ENOBUFS 系统的缓冲内存不⾜ ENOMEM 核⼼内存不⾜ EINVAL 传给系统调⽤的参数不正确.C语⾔sendto()函数:经socket传送数据头⽂件:#include #include 定义函数:int sendto(int s, const void * msg, int len, 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 中.错误代码:1、EBADF 参数s ⾮法的socket 处理代码.2、EFAULT 参数中有⼀指针指向⽆法存取的内存空间.3、WNOTSOCK canshu s 为⼀⽂件描述词, ⾮socket.4、EINTR 被信号所中断.5、EAGAIN 此动作会令进程阻断, 但参数s 的soket 为补课阻断的.6、ENOBUFS 系统的缓冲内存不⾜.7、EINVAL 传给系统调⽤的参数不正确.范例#include #include #include <.h>#include <.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)); _family = AF_INET; _port = htons(PORT); _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), 0, &addr &addr_len); //显⽰client 端的⽹络地址 printf("receive from %sn ", inet_ntoa(_addr)); //将字串返回给client 端 sendto(sockfd, buffer, len, 0, &addr, addr_len); }}

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689407743a243158.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信