c语言 socket send,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
#include
#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), 0, &addr &addr_len);
//显示client 端的网络地址
printf("receive from %s\n ", inet_ntoa(addr.sin_addr));
//将字串返回给client 端
sendto(sockfd, buffer, len, 0, &addr, addr_len);
}
}
c语言 socket send,C语言中send()函数和sendto()函数的使用方法相关推荐
- c语言中1B是多少,C语言1、C语言中,运算对象必须是整型的运算符是【】A./B-查字典问答网...
C语言1.C语言中,运算对象必须是整型的运算符是[]A./B.%C.++D. 2.下列标识符中,不合法的是[] A.x2B.sizeofC._123D.char2 5.设d是double型变量,若要从 ...
- c语言 strcpy原型,浅谈C语言中strcpy,strcmp,strlen,strcat函数原型
实例如下: //strcat(dest,src)把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0' char *strcat(char * strDest, cons ...
- C语言中的rename()和remove()函数的使用及注意点
C语言中的rename()和remove()函数的使用及注意点 C语言中rename() 和remove()函数属于文件处理函数,其中rename() 对文件或目录进行移动和删除. int ret = ...
- C语言中的malloc与free函数
C语言中的malloc与free函数 malloc函数的作用是在堆中开辟一块指定大小的空间.如果开辟成功,返回空间首个字节地址,失败则返回NULL. free函数能够释放在堆中开辟的内存空间,传入一个 ...
- c语言 recv_sin,C++_C语言中经socket接收数据的相关函数详解,recv()函数:
头文件:#incl - phpStudy...
C语言中经socket接收数据的相关函数详解 recv()函数:头文件: #include #include 定义函数: int recv(int s, void *buf, int len, uns ...
- c语言 地址+1,C语言中,为什么指针表达式的值+1.对应的地址值却+4?/为什么两个数组元素的地址相减之差不为地址之差?...
在C语言中,我们常常用到的一个运算是让某个变量的值+1. 例如 M = M + 1. 而在实际运用中,我们发现 对于指针进行+1运算,算出来的结果是+4. 如下图 图中我们定义的 变量M 和指针Mat ...
- C语言程序设计double,C语言中double类型数据占字节数为
1以下选项中,能用作数据常量的是________. A.o115 B.0118 C.115L D.1.5e1.5 2下列叙述中错误的是_______. A.一个C语言程序只能实现一种算法 B.一个C函 ...
- c语言教程 define,C语言中define的用法
预处理命令以"#"号开头,如包含命令#include,宏定义命令#define等.一般都放在源文件的前面,它们称为预处理部分. 所谓预处理是指在进行编译之前所作的工作.预处理是C语 ...
- c语言void结尾,C语言中void*详解及应用
void在英文中作为名词的解释为"空虚:空间:空隙":而在C语言中,void被翻译为"无类型",相应的void *为"无类型指针".void ...
最新文章
- 德州农工大学 计算机排名,德州农工大学美国大学排名及专业排名汇总(USNEWS美国大学排名版)...
- php curl 测试,php使用curl检测网页是否被百度收录的示例
- 在内存中读取函数的ShellCode并执行
- ST函数(ST表)RMQ O(1)查询 离线
- Hi3559AV100开发环境搭建
- python面向对象:小结
- 独角兽影视APP系统源码/双端影视APP源码
- android缅甸语,关于unicode:Android中的缅甸语言
- 联通企业专线_上海联通数据专线-企业宽带网
- C语言_4 循环结构;一些例题
- slideUp()方法和slideDown()方法
- 程序设计学习(c++)(课堂学习2)
- 京东抢购工具 监控工具 秒杀工具
- 杰里之AD697N/AC897N 加强 ESD 静电防护措施说明【篇2】
- 蓝牙聊天App设计1:Android Studio制作蓝牙聊天通讯软件(UI界面设计)
- 穷人家的孩子真的没戏了吗?道翰天琼认知智能机器人api接口平台为您解密-1!
- 2015春季实习生招聘 多益网络科技有限公司笔试+面试 游戏开发工程师
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(三)代码测试
- Scrapy-redis 分布式爬虫-成都安居客二手房数据爬取
- laravel中的composer镜像地址