📄 subject_41616.htm
字号:
<p>
序号:41616 发表者:mimibaby 发表日期:2003-05-28 11:36:18
<br>主题:我做一个聊天的小程序。。。
<br>内容:我想做一个了天的小程序<BR>我的思路是这样的:<BR>1---先创建一个SOCKET<BR>2---如果该SOCKET连接某SOCKET不成功,关了它。<BR> 创建另外一个SOCKET并它设成监听状态。<BR>也就是说,我的程序即可做客户又可做服务器。<BR> <BR>做完之后,我开起了两个该程序,运行发现两个SOCKET中<BR>根本无法通讯!<BR><BR>急死我了。。。请各位高手救命啊!谢谢您了!<BR>1,2 步骤代码如下:<BR>......<BR> SocketConnect.Create();<BR> if (!SocketConnect.Connect(port))//如果该SOCKET连接某SOCKET不成功<BR> {<BR> SocketConnect.Close();<BR> SocketListen.Create(port);<BR> SocketListen.Listen();//把它设成监听状态<BR> }<BR>......
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:笑笑生 回复日期:2003-05-28 15:05:42
<br>内容:去看看这个<BR>http://netghost.narod.ru/vcpp6/ch20/ch20.htm
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mimibaby 回复日期:2003-05-29 11:23:10
<br>内容:谢谢你的答复,我看过此文!<BR>我的不解是:<BR> 为什么我上面写的程序行不通!<BR>谁能帮我解答这个问题我给它800分!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:笑笑生 回复日期:2003-05-29 16:12:36
<br>内容:Be sure that you have the server application listening before you try to connect it to the client application. If you try to connect to it with the client application before the server is listening for the connection, the connection will be rejected. Your application will not detect that the connection was rejected because you haven't added any error handling to detect this event.<BR><BR>以上是那篇文章里的原话,在客户端Connect之前,必须有一个服务器端正在Listen。<BR>把你的程序改改,改成两个,一个服务器端,直接listen,一个客户端,Connect,然后先启动服务器端,在启动客户端,看看能不能连通。<BR><BR>另外,必须生成自己的Socket类,重载他的Listen等方法,相信你也是这么做的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mimibaby 回复日期:2003-05-29 18:30:18
<br>内容:我也是这样人为的,但一定要“在客户端Connect之前,必须有一个服务器端正在Listen”<BR>为什么不是这样的:<BR>先判断是否能连接上,如果能,就把本程序做CLIENT 和SERVER 通话。<BR>相反就做SERVER 等待其他连接!<BR><BR>能给我解释一下吗?我给你800分,谢谢了!
<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>回复者:笑笑生 回复日期:2003-05-30 11:45:03
<br>内容:很抱歉,是我理解上有错误。<BR>像你所说的,"先判断是否能连接上,如果能,就把本程序做CLIENT 和SERVER 通话。相反就做SERVER 等待其他连接"是可以的。<BR>不过,SocketConnect.Connect(port)的返回值为FALSE并不一定表示没有连到服务器端,正确连接到服务器端的返回值也可能为0(BOOL型的FALSE)。<BR>你可以把你的程序改成两个,服务器端,客户端,然后运行服务器端,在运行客户端,不要判断SocketConnect.Connect(port)的返回值,应该是可以连通的。不过,如果在客户端的SocketConnect.Connect(port)处设个端点,观察其返回值,很可能就是0(FALSE);<BR>所以按你的代码,即使正确连接了,也被你Close了。<BR>要实现"先判断是否能连接上,如果能,就把本程序做CLIENT 和SERVER 通话。相反就做SERVER 等待其他连接",应该在SocketConnect.Connect(port)后,执行CSocket::GetLastError()方法,得到错误码,再通过这个错误码判断是否连接到服务器了。<BR>我试了一下,我的程序在客户端成功连接到服务器端时,SocketConnect.Connect(port)的返回值也为0(FALSE),CSocket::GetLastError()得到的错误码为10035(WSAEWOULDBLOCK),在MSDN里可以查到帮助,真正的没有成功连接到服务器的错误码应该是10013,11001,10060等等。<BR>在MSDN里关键字栏输入WSAEWOULDBLOCK,然后双击进入的帮助页里可以看到所有的错误码
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:mimibaby 回复日期:2003-05-30 16:39:59
<br>内容:谢谢笑笑生老师,谢谢您的教导。我决定给您800分!谢谢您!<BR>我先给您好100分,之后我会发贴邀您拿分!
<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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -