本帖最后由 kk_lee69 于 2015-4-8 10:02 编辑
回复 6# 漠北雪~狼
我的程式 如下: 接收 對方 傳來的訊息後 檢查看看是不是 規定的溝通方式,是的話 就放行 不是 就關閉連線
從上圖可知 每個客戶端 會有兩個 Socket 號碼
目前我只能關掉一個 ,但是關掉的還是會卡在哪邊
因為
$RegSocket 第一次會跑一個溝通的 Socket 號碼後 會在 建立最後確認的 Socket 號碼 而我只能抓到最後一次的
Func _TCPRecv()
Local $RegSocket = -1, $RegIp, $rDays
;嘗試接收傳入的請求
Dim $RegSocket = TCPAccept($MainSocket)
;~ ;當$RegSocket 不等於 -1 就是 有人請求了 就跑下面 檢查是不是 上線的請求
If $RegSocket <> -1 Then
Dim $recv_1 = TCPRecv($RegSocket, 1024 * 1024, 1)
If @error Then
$error = Int(@error)
echo($error & "錯誤,無效的Socket: " & $RegSocket)
EndIf
If $recv_1 <> "" Then
$recvBtoS = _MAC_Decrypt( BinaryToString($recv_1, 4) )
$rDays = StringSplit($recvBtoS, "+", 1)
If IsArray($rDays) Then
If $rDays[1] = $MainStr Then ; "0x232323232B"
;通過 $rDays[1] = $MainStr 的檢查 表示 是我自己的程式 所以放行 後續處理
Else
; 沒有通過則希望 強制關閉
TCPCloseSocket($RegSocket)
$RegSocket=0
EndIf
EndIf
EndIf
EndIf
EndFunc ;==>_TCPRecv
|