# Re: Winsock 常常会卡住??!!

Posted by 东吴电算人 on September 07, 1998 at 16:23:56:

In Reply to: Winsock 常常会卡住??!! posted by Maxwell on September 05, 1998 at 05:42:08:

: 在 Client 断线过后也会自动释放, 但是奇怪的是在传送时常会有 "卡死" 现象, Server 明明把资讯丢出去了, Client 怎么等就是收不到, 更莫名其妙的问题是, 我把 Server 暂停(进入单步执行), 再按一次全速执行, Client 就可以收到资料, 怎么找就是找不出问题, 请问有人解决过此类怪异现象吗?
我之前也发生过此类情形，送给多个 Clinet 时只有第一个收到而在 Client 送出讯息后，那原本未收到的讯息就会收到了！
后来我发现在 winsock 中有一个 SendComplete Events
我在送出前先确定是否有资料在传送中，若有就等待传送完毕时再送..
如此就解决这个问题。

做法：
宣告 WinsockStatus as integer 为全域变数

假设
WinsockStatus = 0 闲置中
WinsockStatus = 1 使用中

当一开始 Open 时 WinsockStatus = 0
Send 前判别是否 WinsockStatus = 0
False 时就用 Loop 等到 WinsockStatus = 0
True 时就 WinsockStatus = 1 然后就 Send

SendComplete Events 内
if WinsockStatus = 1
WinsockStatus = 0
end if
让资料传完后使 WinsockStatus = 0

希望这对你有帮助..

Follow Ups: