怎么修改socket接收发送缓冲区大小?

gloriajie 2004-08-28 10:37:06
我想发送接收大约10k的数据,可是socket接收发送缓冲区只有1024字节,我该怎么办呢?
是不是可以用setsockopt改变缓冲区的大小呢?怎么用呀?
这样有什么不好吗?

...全文
1088 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
allenq 2004-08-29
  • 打赏
  • 举报
回复
UP

setsockopt
large_small 2004-08-29
  • 打赏
  • 举报
回复
UP

setsockopt
goodname008 2004-08-29
  • 打赏
  • 举报
回复
如果用的是MFC中的CAsyncSocket或CSocket类,可以使用其成员函数SetSockOpt。
如果用的是Windows Socket Functions,可以直接使用API函数setsockopt。
lincoder666 2004-08-29
  • 打赏
  • 举报
回复
mark
gloriajie 2004-08-28
  • 打赏
  • 举报
回复
你能告诉我SOL_SOCKET是什么意思吗,谢谢
DentistryDoctor 2004-08-28
  • 打赏
  • 举报
回复
socket的接收缓冲区为8k,可以用setsockopt/CSocket::Ioctl设置SO_RCVBUF设置。

int nRecvBuf=32768;
setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
gloriajie 2004-08-28
  • 打赏
  • 举报
回复
我把发送的数据的最大量(也就10k左右)估计出来,缓冲区设的足够大就行了,不用什么循环和控制算法了不是就?我是觉得这样比较简单啦。这样的坏处是不知道数据大小的时候有可能不够用是吗?还有别的坏处吗?耗费资源什么的?

循环发送那对方也要循环接受了?两方怎么同步呢?
PPFish 2004-08-28
  • 打赏
  • 举报
回复
当然,也是需要设计一个控制算法的
PPFish 2004-08-28
  • 打赏
  • 举报
回复
为什么不可以多次发送呢?毕竟设置Buffer的方法治标不治本,如果某次数据的大小超过了缓冲区的容量,是不是又要设置一次呢?我的做法就是在一个while循环里面,分多次发送
c4313848 2004-08-28
  • 打赏
  • 举报
回复
SOL_SOCKET这是一个socket选项,像广播,就是在这里设置

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧