我想在发送方不断地对同一个接收方发送数据,
for()
{
send();
}
我设置了不延时发送,即不等缓冲区满就发送出去了,请问这样写合适吗
接收方要怎样写recv()才能正确地接收到发的消息?
for()
{
send();
}
我设置了不延时发送,即不等缓冲区满就发送出去了,请问这样写合适吗
接收方要怎样写recv()才能正确地接收到发的消息?
解决方案 »
- 请问Windows是怎样正确识别各个应用程序的消息队列
- 早上起来,升星了。散分!!!
- WSAStartup()返回值是WSASYSNOTREADY,即10091,说WSA没有准备好,
- 如何显示加了Rich Edit的控件的对话框
- 寻求手机铃声及图片下载方面的资料。
- 特简单问题:怎么判断一个字符指针赋过值没有
- 关于全局变量调用的问题!
- 请问SetViewportOrg 和 SetWindowOrg两个函数的区别是什么?
- 求解:如何在TXT文件中用CStdioFile 类覆盖已找到的一行文字
- MFC 界面问题 Edit 不显示
- dsp 和dsw 文件损坏 VC无法打开工程.请问怎么修复
- vc进度条数据处理时间不确定,该如何控制进度条
接受方具体应该怎样写才能正确接受呢
定好数据格式,收到数据按格式解就可确定send的次数
你过你想实现IM的那种在线机制,你可以搜索一下“心跳”,会解释的很清楚的,这种机制是在使用另外一个端口发送心跳信息。
你可以而模仿一下。不过,你也可以这样,把每次的数据信息长度固定化,比如,每次发送100字节,然后等待对方回馈信息。
对方接受的时候,每接受100字节,然后发出回馈信息。
这个不延时发送设置有什么作用?
TCP最终要变成IP包传递的
你能保证接收IP层的不延时?
很有可能到接收端,在程序下一次接收前,两个TCP包都OK了
所以这种设置只能自我YY一下
实际运行中是没用,也不现实的
这种流的东西,别指望靠一个什么设置就可以按你说的次序一样达到并接收,不现实
这个要看网络负载的,你SEND一下发一个完整的包,但是发送是前后连贯的,也许你之前的包已经占满了发送缓存,而客户端的接收又还没处理,那么发送当前包时你不顾缓冲区是否还装得下,强制发送,则会返回发送失败,此时需要等待"可写"通知,否则会丢失这个包.
还真会浪费资源.
服务器Listen();
客户端Connect(); 发送SYN,服务端响应,connect连接成功
服务器Accept(); 我指的是每执行一次send,要等到服务器recv后返回我一个信息我再send。
while(true)
{
send(buff100);
if(sendout)break;
receive(response_form_server);
}
S:
while(true)
{
receive(buff1000);//此处要做判断,每次只收100,还要判断是否接受结束。
send(response);
}
senddata=::send(m_socket,m_pSendBuf,m_LogicPackLen,0);
if(senddata<=0)
{
if(GetLastError()!=WSAEWOULDBLOCK)
break; //在这里响应FD_WRITE通知或者简单点做一下SLEEP也可以,然后CONTINUE;}
有数据的时候 有消息(FD_READ)会通知你 不过它需要有窗口