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

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

本文主要介绍send()函数和sendto()函数在C语言中的使用,这是C语言入门学习中的基础知识。有需要的朋友可以参考一下。

C send()函数:通过套接字传输数据

头文件:

#包含sys/types . h #包含sys/socket.h

定义功能:

int send(int s,const void * msg,int len,unsigned int falgs);

函数描述:send()用于将数据从指定的套接字发送到另一台主机。参数s是已建立连接的套接字。参数msg指向要连接的数据内容,参数len是数据长度。参数flags一般设置为0,其他值定义如下:

MSG_OOB发送的数据是带外发送的

MSG_DONTROUTE取消路由表查询

MSG_DONTWAIT设置为非阻塞操作。

MSG_NOSIGNAL这个动作不愿意被SIGPIPE信号中断。

返回值:如果成功,返回实际传输的字符数;如果失败,将返回-1。错误原因存储在errno中。

错误代码:

EBADF参数s是非法的套接字处理代码。

EFAULT参数中有一个指向不可访问的内存空间的指针。

ENOTSOCK参数s是文件描述符,不是套接字。

EINTR被信号中断。

EAGAIN,这个操作会阻塞进程,但是参数s的套接字是无法破解的。

ENOBUFS系统缓冲内存不足。

ENOMEM核心内存不足。

EINVAL传递给系统调用的参数不正确。

C sendto()函数:通过套接字传输数据

头文件:

#包含sys/types . h #包含sys/socket.h

定义:int send to (int s,constvoid * msg,int len,unsigned int flags,conststruct sockaddr * to,int tolen);

函数描述:sendto()用于将数据从指定的套接字传输到另一台主机。参数s是已经建立连接的socket,如果使用UDP协议,则不需要连接操作。参数msg指向要连接的数据内容,参数flags一般设置为0。详细描述请参考send()。参数to用来指定要传输的网络地址,sockaddr引用的结构是bind()。参数tolen是sockaddr的结果长度。

返回值:如果成功,返回实际传输的字符数;如果失败,将返回-1;错误原因将存储在errno中。

错误代码:

1.EBADF参数s的非法套接字处理代码.

2.EFAULT参数中有一个指针指向不可访问的内存空间。

3.WNOTSOCK canshu s是文件描述符,不是socket。

4.EINTR被信号中断。

5.EAGAIN这个动作会阻塞进程,但是参数S的soket被make-up类阻塞。

6.ENOBUFS系统的缓冲内存不足。

7.EINVAL传递给系统调用的参数不正确。

模型

#包含sys/types.h

#包含sys/socket.h

#包含netinet.in.h

#包含arpa.inet.h

#定义端口2345 /*使用的端口*/

主()

{

int sockfd,len

struct sockaddr _ in addr

char缓冲器[256];

//创建套接字

if(sockfd=socket(AF_INET,SOCK_DGRAM,0)) 0)

{

perror(‘插座’);

出口(1);

}

//填写sockaddr_in结构

bzero(addr,sizeof(addr));

addr.sin _ family=AF _ INET

addr . sin _ PORT=htons(PORT);

addr . sin _ addr=hton 1(in addr _ ANY);

if(bind(sockfd,addr,sizeof(addr)) 0)

{

perror('连接');

出口(1);

}

while(1)

{

bezro(buffer,sizeof(buffer));

len=recvfrom(socket,buffer,sizeof(buffer),0,addr addr _ len);

//显示客户端的网络地址

printf('接收自%s\n ',inet _ ntoa(addr . sin _ addr));

//将字符串返回给客户端

sendto(sockfd,buffer,len,0,addr,addr _ len);

}

}

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: