关于同步socket的问题,请高手助拳,分数不够可以再加,顶者有分

sdwtao 2003-02-17 04:28:49
我不知道怎么才能实现一个同步的socket,利用mfc中的CSocket类能不能达到目的??

我主要是想这样的:我想在 调用send函数的时候 如果对方还没有收完我send的数据,send就一直处于阻塞状态。主要是因为我的代码中每段要发送的数据都有一个头、然后才是实用数据。所以我不希望我在收的时候 缓冲区里有不同的send发送的数据(这样我还的判断是那次、有几次,从哪开始分割。然后才能取出我要的数据,不仅不易控制而且还容易出错)。 不知道能不能实现?

...全文
24 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdwtao 2003-02-18
  • 打赏
  • 举报
回复
名字叫什么?
SatanLi1982 2003-02-18
  • 打赏
  • 举报
回复
see
jemmylau 2003-02-18
  • 打赏
  • 举报
回复
用udp比较适合你
HongHuer 2003-02-18
  • 打赏
  • 举报
回复
我写了个小东西,是局域网的聊天室,使用多线程,同步,select模型。

自己封装的 winsock api 。

在csdn的软件原码里面(VC++6 MFC),作者是HongHuer

如果你有兴趣,可以自己找来看看。
hi2003 2003-02-18
  • 打赏
  • 举报
回复
建议最好不要用CSocket,它有可能无缘无故就阻塞在那里,动都不动!
至于CSocket实现同步多线程的服务器端例程在MSDN\sample\vc\mfc\advance\
里面有!
sdwtao 2003-02-18
  • 打赏
  • 举报
回复
谁能给个用CSocket实现同步多线程的服务器端例程 我送他100分
barsteng 2003-02-18
  • 打赏
  • 举报
回复
在socket的底层实现中,有一个类似滑动窗口的概念,该窗口有一定的buffer,当你send某些数据时,只要系统成功的将数据拷贝到发送buffer中,就会提示你成功。
—————————————————————————————————
Let your soul guide you upon your way
my qq is :131780
listeningcn 2003-02-18
  • 打赏
  • 举报
回复
up
HongHuer 2003-02-17
  • 打赏
  • 举报
回复
调用send函数的时候 如果对方还没有收完我send的数据,send就一直处于阻塞状态。

>>CSocket 可以满足你的。
如果对方(接受方)的window(可以理解为接受缓冲)不为0,那么就可以send。
在你的实验里面,之所以可以连续的send,就是这个原因。

要做到这点。

可以这样:
client recv 后就向 server 发送一个消息,说收到了。
接着 server 就可以继续发,要不然(没有收到消息),就不能发(send)。
yins 2003-02-17
  • 打赏
  • 举报
回复
定义一个格式(帧),里面有长度,那就不用怕了。当然这样要在接收方做个解释。
sdwtao 2003-02-17
  • 打赏
  • 举报
回复
逍遥兄 来了 失敬失敬 我可经常看见你帮人回答问题,先谢了
不过 能再说的详细点吗?
我试过CSocket 我用一个没有调用receive的客户端连接一个服务器

服务器端在连客户连上之后 连续的调用send函数,结果客户端根本没收
send函数全部调用成功了,这不是我想要的 我是想如果没人收 就得阻塞
foxmail 2003-02-17
  • 打赏
  • 举报
回复
首先CSocket能满足你的要求
其次,你所说的问题靠多个异步socket也能实现

18,356

社区成员

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

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