|
本帖最后由 bingxing8000 于 2011-2-15 14:19 编辑
求高手解答,写的局域网通讯不成功,不知道错在那 ,服务端开了端口后,需要运行一个无限循环,等待客户端的连接吗?
还有一个问题,就是:只能客户端给服务端发数据吗?因为我在论坛看到帖子和源码,很多都是客户端给服务端发数据。
服务端
#include <guiconstantsex.au3>
$a=GUICreate("传数据",300.80)
GUISetState(@SW_SHOW)
Local $sRecv
$edit=GUICtrlCreateEdit("",8,8,250,150)
Local $df,$ConnectedSocket
TCPStartup()
$df="127.0.0.1"
$chuan=TCPListen($df,44556)
If $chuan = -1 Then Exit ; 创建监听不成功就退出
TCPAccept($chuan)
$sRecv = TCPRecv($chuan, 1024 * 1000, 1);256)
if $sRecv <> "" Then GUICtrlSetData($edit, BinaryToString($sRecv, 4)
While 1
$msg=GUIGetMsg()
Select
Case $msg=$gui_event_close
_ert()
EndSelect
WEnd
Func _ert()
TCPCloseSocket ($chuan)
TCPShutdown()
Exit
EndFunc
客户端
$a=GUICreate("传数据",300.80)
GUISetState(@SW_SHOW)
AutoItSetOption("TCPTimeout", 100);这个选项设置似乎没有用,有空再研究下
$edit=GUICtrlCreateEdit("",8,8,250,150)
Local $Report,$FIXED = DriveGetDrive("FIXED")
If Not @error Then
For $i = 1 To $FIXED[0]
$Report &= StringUpper($FIXED[$i]) & "盘总容量:" & Int(DriveSpaceTotal($FIXED[$i]) / 1024) & "G 剩余空间比例:" & String(Int(DriveSpaceFree($FIXED[$i]) / DriveSpaceTotal($FIXED[$i]) * 100)) & "%" & @CRLF
Next
GUICtrlSetData($edit, $Report)
EndIf
Local $sMsg ,$chuan
$df="127.0.0.1"
TCPStartUp()
$chuan=TCPConnect($df,44556)
If $chuan = -1 Then
MsgBox(0, "提示", "服务端未开启请联系管理员!", 0)
_ert()
EndIf
$Ret = StringToBinary($Report, 4);转换字符串为二进制数据,方便与发送数据给服务器
TCPSend($chuan, $Ret);在已经连接的套接字(socket)上面发送数据
While 1
$msg=GUIGetMsg()
Select
Case $msg=$gui_event_close
_ert()
EndSelect
WEnd
Func _ert()
TCPCloseSocket ($chuan)
TCPShutdown()
Exit
EndFunc |
|