subject_22036.htm
来自「一些关于vc的问答」· HTM 代码 · 共 36 行
HTM
36 行
<p>
序号:22036 发表者:yxx 发表日期:2002-11-22 09:07:46
<br>主题:用CSocket收发会丢包?!
<br>内容:我写了两个小程序来收发Socket包:<BR>//发送的代码如下:<BR>void CAaaDlg::OnButton1() <BR>{<BR> // TODO: Add your control notification handler code here<BR> char aaa[100];<BR><BR> strcpy(aaa,"sdfas");<BR> for(int i=0;i<100;i++)<BR> {<BR> Sleep(100);<BR> m_pConnectSocket->Send(aaa,5);<BR> }<BR>}<BR>接收的代码如下:<BR>void CMySocket::OnReceive(int nErrorCode) <BR>{<BR> // TODO: Add your specialized code here and/or call the base class<BR> char bbb[100];<BR> static int aaa=0;<BR> TRACE("%d\n",aaa++);<BR> Receive(bbb,100);<BR><BR> CSocket::OnReceive(nErrorCode);<BR>}<BR>结果我调试后发现如果发送的时候没有Sleep(100)的话,接收方100个包中只能收到5个包,请问是不是其它的包都丢了啊?为什么?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:金鱼王 回复日期:2002-11-22 09:18:42
<br>内容:你使用的一定是默认的UDP协议。请使用TCP/IP协议的Socket
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yxx 回复日期:2002-11-22 09:47:20
<br>内容:请问我怎么知道我使用的是什么协议?<BR>我应该怎么选择使用TCP/IP协议的Socket?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:金鱼王 回复日期:2002-11-22 09:58:19
<br>内容:创建socket的时候使用<BR>SOCK_STREAM是TCP/IP协议<BR>SOCK_DGRAMUDP协议
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yxx 回复日期:2002-11-22 10:23:27
<br>内容:我查了一下MSDN,CSocket的Create函数的原型如下:<BR>BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL );<BR>那么默认应该是SOCK_STREAM呀,我创建时是:m_pConnectSocket->Create();照理应该用的就是SOCK_STREAM啊?<BR>我道是觉得会不会Windows用的消息驱动机制的问题,在我还没有处理完上一个OnReceive()时,下一个消息就到了,而由于我还没有处理完上一个,所以下一个的消息就被抛弃了?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yxx 回复日期:2002-11-22 13:47:53
<br>内容:哦,是我搞错了,不好意思。实际上我全部内容都收到了的,只不过一次就收了好几个包。我还一直以为Socket每次接收都收一个包!<BR>不过还是感谢金鱼王!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?