找回密码
 加入
搜索
查看: 1837|回复: 2

[网络通信] TCP监听的放在循环的那个位置?小问题,请教大家

[复制链接]
发表于 2011-8-25 23:19:56 | 显示全部楼层 |阅读模式
Global $ServerPORT=8880
Global $ClientPort=8888


TCPStartup()
$MainSocket = TCPListen(@IPAddress1, $ClientPort,100)
If $MainSocket = -1 Then Exit 


While 1        
        Local $msg = TrayGetMsg()
        NetPortMonitor()        ;监听端口的函数放这里对吗?
        Select
                Case $msg = 0
                        ContinueLoop                        
                Case $msg = $exititem
                        ExitLoop
        EndSelect
WEnd

TCPShutdown() 


ProcessClose(@AutoItPID)

Func NetPortMonitor();TCP端口监听命令接收        
        $ConnectedSocket = TCPAccept($MainSocket)        
        If $ConnectedSocket >= 0 Then ;与客户端连接成功
                $rev = TCPRecv($ConnectedSocket,2048)
                If StringLen($rev) > 0 Then        
                        ClientRevCommand($rev)                                        
                        TCPCloseSocket($ConnectedSocket)
                        $ConnectedSocket = -1
                EndIf
        EndIf        
        TCPCloseSocket($ConnectedSocket)
EndFunc
我放在上面循环结构的位置,结果造成很卡,其他功能没有办法流畅运行了.怎么处理更好呢?
在线等......
发表于 2011-8-26 00:48:06 | 显示全部楼层
while 1
select
.........
endselect
$ConnectedSocket = TCPAccept($MainSocket) 
If $ConnectedSocket >= 0 Then 
   while 1
                $rev = TCPRecv($ConnectedSocket,2048)
                If StringLen($rev) > 0 Then        
                ................
   Wend
endif
Wend
 楼主| 发表于 2011-8-26 01:09:41 | 显示全部楼层
我删去了接受的while,这个是关键?

其他的

Case Else
    我把调用函数,放这里了.也可以吧.

不过感觉和在select 语句外面,是一个效果吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-19 01:56 , Processed in 0.079245 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表