社区
C语言
帖子详情
关于linux c socket send()recv()的问题
xiaoyuaccp
2010-04-14 03:57:46
问题1 socket断开后(包括服务端主动断开或网络原因断开)再send()会不会溢出
问题2 int a=recv()返回int =0或int=-1代表什么意思
谢谢
...全文
488
9
打赏
收藏
关于linux c socket send()recv()的问题
问题1 socket断开后(包括服务端主动断开或网络原因断开)再send()会不会溢出 问题2 int a=recv()返回int =0或int=-1代表什么意思 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wesleyluo
2010-04-14
打赏
举报
回复
[Quote=引用 4 楼 xiaoyuaccp 的回复:]
引用 3 楼 huatian008 的回复:
引用 2 楼 xiaoyuaccp 的回复:
别来误导我
楼主给我们讲讲呗
现在我测试的结果是 socket断开后再send()会溢出 recv return 0是socket已断开 -1不知道是什么情况 请高手给讲下啊
[/Quote]
我也在学习
关于recv()的返回值,书上是这样定义的,返回实际读取的字符数目;当返回值为-1时表示发生错误。
返回值为0的时候就表示断开了,因为你没有读到数据。
不明白你的服务器主动断开的时候,你就已经没有sock了,怎么还可以send()呢?不会出错吗?
xiaoyuaccp
2010-04-14
打赏
举报
回复
[Quote=引用 5 楼 hairetz 的回复:]
引用楼主 xiaoyuaccp 的回复:
问题1 socket断开后(包括服务端主动断开或网络原因断开)再send()会不会溢出
问题2 int a=recv()返回int =0或int=-1代表什么意思
谢谢
1.如果是长连接,一般用心跳包来监听对面是否断开。若断开后,第一次调用send,数据应该会写入缓冲区,我不觉得会溢出,你说的溢出是啥意思。但是之后,再send应该就会返回失……
[/Quote]
溢出就是堆栈溢出 断开后第一次send()的确没有益处,第二次在send()就溢出了
猫已经找不回了
2010-04-14
打赏
举报
回复
问题一还可以参考下:
http://light6891.blog.163.com/blog/static/9696290920096253354467/
猫已经找不回了
2010-04-14
打赏
举报
回复
2.这个看你是阻塞模式,还是非阻塞模式。
以前有位GG已经想的很详细了,可以参考
http://topic.csdn.net/u/20090428/13/4fd54186-d70a-4ff7-9b57-4af83f225e90.html
猫已经找不回了
2010-04-14
打赏
举报
回复
[Quote=引用楼主 xiaoyuaccp 的回复:]
问题1 socket断开后(包括服务端主动断开或网络原因断开)再send()会不会溢出
问题2 int a=recv()返回int =0或int=-1代表什么意思
谢谢
[/Quote]
1.如果是长连接,一般用心跳包来监听对面是否断开。若断开后,第一次调用send,数据应该会写入缓冲区,我不觉得会溢出,你说的溢出是啥意思。但是之后,再send应该就会返回失败了。
xiaoyuaccp
2010-04-14
打赏
举报
回复
[Quote=引用 3 楼 huatian008 的回复:]
引用 2 楼 xiaoyuaccp 的回复:
别来误导我
楼主给我们讲讲呗
[/Quote]
现在我测试的结果是 socket断开后再send()会溢出 recv return 0是socket已断开 -1不知道是什么情况 请高手给讲下啊
huatian008
2010-04-14
打赏
举报
回复
[Quote=引用 2 楼 xiaoyuaccp 的回复:]
别来误导我
[/Quote]
楼主给我们讲讲呗
xiaoyuaccp
2010-04-14
打赏
举报
回复
别来误导我
AlanBruce
2010-04-14
打赏
举报
回复
1、失败了。
2、0代表成功。-1代表出错
socket
_
linux
_client.c
#include<stdio.h> //fopen();fwrite(); #include <stdlib.h> //标准函数库 #include <errno.h> //定义错误码 #include <string.h>//字符串...#include <sys/
socket
.h>//
send
();
recv
(); #include #include <dirent.h>
linux
下收发数据
linux
下收发数据
socket
函数 以及
send
recv
函数都用到了
C++
socket
基本功能跨平台封装(好用)
真正可以使用的平台无关性的 C++
socket
wrapper,没有做任何...封装了:setoption, connect, close,
send
,
recv
,
send
to,
recv
from, accept,bind 等基本方法。C++11 标准,macos/
linux
/windows 均进行了完全测试。
python网络编程调用
recv
函数完整接收数据的三种方法
在使用
socket
进行网络编程中,如何判定对端发送一条报文是否接收完成,是进行
socket
网络开发必须要考虑的一个
问题
。这里,简要介绍一下判别数据接收接收完成常用的三种方法: 1.基础数据接收法: 使用基础数据接收法...
linux
C语言
socket
函数
recv
recv
函数是在
Linux
C 语言网络编程中用于从已连接的套接字接收数据的函数。它通常与 TCP 连接一起使用,但也可以用于 UDP(尽管对于 UDP,更常使用
recv
from,因为它还可以接收发送方的地址信息)。
C语言
69,373
社区成员
243,079
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章