為何Client端在第一次發送信息能收到回應,第二次發送信息後就無回應?在線等......

yydyqy 2003-01-10 12:55:04
在C/S結構中,Client端在第一次用套接字s發送信息(進行生份驗證)能收到回應,第

二次用s發送信息後就無回應?而再打開一客戶端程序發送信息後, 第一個客戶程序

收到回應, 但Server端又沒了回應, 再發送客戶信息後, 客戶端無響應, Server端

又有了回應, 如此反覆, 這昰為何?請那位大俠幫忙看一下, 不生感激!
...全文
3 点赞 收藏 11
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yydyqy 2003-01-11
第一次进来有数据
回复
River_H 2003-01-10
第一次接受時, 我只是用Receive()函數將數據接收後將其中的某些字段(用戶名及密碼)與Server的用戶名及密碼比較, 若錯誤則返回錯續信息.

那如果不是第一次进来你有没有取数据呀?

我的意思是,在每一次到OnReceive函数中,都要读取一些数据,以便下次数据到来时再触发该函数。
回复
yydyqy 2003-01-10
ExitWin(ExitWin), 當然沒有.
回复
ExitWin 2003-01-10
你是不是第一次send完了。。
然后就close了
回复
cowisdom 2003-01-10
我曾经为了方便也采用过Csocket,后来也出现了这种问题,解决的办法是在接收后,再发送信息s.send函数之前加一个调试断点(不需要改动任何代码),就能稳定接收和发送,除此之外,我尝试了很多种方法都一一失败,不知道你是不是也是这种情况,如果是,建议你改用Socket api 或者CSocket的父类。
回复
yydyqy 2003-01-10
River_H(小河) ( ), 第一次接受時, 我只是用Receive()函數將數據接收後將其中的某些字段(用戶名及密碼)與Server的用戶名及密碼比較, 若錯誤則返回錯續信息, 有問題嗎? 謝謝!
回复
River_H 2003-01-10
用MFC CSocket写你要注意,在第一次连接成功后发送数据,对方OnReceive函数会被调用。但是如果对方没有对接受到的数据进行过任何处理。那你再发送的数据并不会再次激发对方的OnReceive函数。为了避免这种情况,你可以在OnReceive函数中读取一个字节的内容。试试看可不可以。
回复
yydyqy 2003-01-10
gauspican(gauspican), Server端在BOOL CWinThread::InitInstance()中的if (!PumpMessage())處出現問題, 應昰處理線程消息循環時出現問題, 但該如何解決?我昰首次做通信程序, 請多幫忙, 謝謝!
回复
yydyqy 2003-01-10
用MFC CSocket类寫的, 昰不昰因為出現了阻塞?若是因為阻塞該如何解決?
回复
gauspican 2003-01-10
"而再打開一客戶端程序發送信息後, 第一個客戶程序

收到回應, 但Server端"
1、socket乱了吧?
2、提交的事件有问题
3、不要开第二个client,只开一个,debug看看c/s两端的情况,有没有引发Event
回复
xenogear 2003-01-10
用什么写的?socket api还是MFC socket类
应该你程序的问题,可能的话将代码贴出来。
回复
发动态
发帖子
网络编程
创建于2007-09-28

1.8w+

社区成员

VC/MFC 网络编程
申请成为版主
社区公告
暂无公告