社区
网络编程
帖子详情
关于 recv函数 第二个参数
zwbhwa
2012-10-08 02:36:22
char recvBuf[100];
memset(recvBuf ,0 ,100 );
recv(ClientSocket, recvBuf ,100 , 0);
-------------------------------------
上述写法第二个参数没问题,请问怎么姜recvbuf改成string类型 使用,用string.c_str()不行,因为是 const char *类型,而第二个参数是char *类型,求大神解答
...全文
241
8
打赏
收藏
关于 recv函数 第二个参数
char recvBuf[100]; memset(recvBuf ,0 ,100 ); recv(ClientSocket, recvBuf ,100 , 0); ------------------------------------- 上述写法第二个参数没问题,请问怎么姜recvbuf改成string类型 使用,用string.c_str()不行,因为是 const char *类型,而第二个参数是char *类型,求大神解答
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zwbhwa
2012-10-08
打赏
举报
回复
while( !bRecv )
{
int buflen = recv(ClientSocket, recvBuf ,sizeof(recvBuf), 0);
printf(" %d", buflen);
if (buflen == sizeof(recvBuf))
{
memset(recvBuf ,0 ,10 );
}
else
{
bRecv = TRUE;
}
}
------------------------------------
这样循环recv时 当数据正好和缓冲区大小一样 就跳不出来……
[Quote=引用 4 楼 的回复:]
不能使用string,因为其长度未知。
如果觉得缓冲区比较小,可以分多次recv
[/Quote]
zwbhwa
2012-10-08
打赏
举报
回复
能帮忙写个循环recv的例子吗?最后还要把recv的数据打印到控制台
[Quote=引用 6 楼 的回复:]
你调用recv的时候,有个长度就是你的buffer的长度,所以socket是不会写到你的buffer之外的,这一点可以放心。理论上,你的buffer哪怕只有一个字节,也能成功接收任何大小的数据;
无论你的buffer有多么的大,也不如数据大,所以循环接收是免不了的。
[/Quote]
youngwolf
2012-10-08
打赏
举报
回复
你调用recv的时候,有个长度就是你的buffer的长度,所以socket是不会写到你的buffer之外的,这一点可以放心。理论上,你的buffer哪怕只有一个字节,也能成功接收任何大小的数据;
无论你的buffer有多么的大,也不如数据大,所以循环接收是免不了的。
youngwolf
2012-10-08
打赏
举报
回复
recv不能使用string(就算你预先为string分配了足够的内存,也可能有问题,string是一个非常复杂的类,要避免直接操作其内存),发送可以。
就用数组是最好的。
sumos
2012-10-08
打赏
举报
回复
不能使用string,因为其长度未知。
如果觉得缓冲区比较小,可以分多次recv
zwbhwa
2012-10-08
打赏
举报
回复
那接收数据只能用字符数组吗?可是我不知道我接收的数据多大咋办
[Quote=引用 2 楼 的回复:]
不要直接使用string的数据
因为string的数据是动态增长的
[/Quote]
ouyh12345
2012-10-08
打赏
举报
回复
不要直接使用string的数据
因为string的数据是动态增长的
wsxzx1
2012-10-08
打赏
举报
回复
用const_cast<char*>
对
recv
函数
的一些理解
recv
函数
:不论是客户还是服务器应用程序都用
recv
函数
从TCP连接的另一端接收数据。...第二个
参数
:指向接受的数据所在的缓冲区 第三个
参数
:缓冲区的最大尺寸,sizeof() 第四个
参数
:置0就完事了 如果rec...
【Socket网络编程】17.
recv
()
函数
详解
第二个
参数
指明一个缓冲区,该缓冲区用来存放
recv
函数
接收到的数据; 第三个
参数
指明buf的长度;第四个
参数
一般置0。 同步Socket的
recv
函数
的执行流程 当应用程序调用
recv
函数
时:
recv
先等待 SOCKE...
linux
recv
函数
参数
,linux send
recv
函数
详解
intsend(SOCKETs,constcharFAR*buf,intlen,intflags);不论是客户还是服务器应用程序都用send
函数
来向TCP连接的另一端发送数据。...第二个
参数
指明一个存放应用程序要发送数据的缓冲区;第三个
参数
指明...
recv
函数
返回值说明
recv
函数
int
recv
( SOCKET s, char FAR *buf, int len, int flags);... 第二个
参数
指明一个缓冲区,该缓冲区用来存放
recv
函数
接收到的数据; 第三个
参数
指明buf的长度; 第四个
参数
一般置0。 这里只描述同步Socket的
关于
recv
函数
recv
函数
函数
原型:int
recv
( SOCKET s, char *buf, int len, ...
参数
二:指明一个缓冲区,该缓冲区用来存放
recv
函数
接收到的数据;
参数
三:指明buf的长度;
参数
四 :一般置为0。 同步Socket的
recv
函数
的执行流...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章