tcp发送接收问题
本帖最后由 jyjuse 于 2010-1-1 15:00 编辑tcp发送端连续发送时,接收端收到的数据会出现发送的第一条跟第二条连在一起的问题.必须让发送端等待一段时间,再发送第二条,接收端才正确分别是第一条还是第二条,有什么办法不用等待,直接发送就能到记录正确分条.听说可以监听队列不知道怎么实现,请高手指点. 上源码:face (17): tcp发送端连续发送时,接收端收到的数据会出现发送的第一条跟第二条连在一起的问题.必须让发送端等待一段时间 ...
jyjuse 发表于 2009-12-30 16:57
第一条跟第二条连在一起?
TCP发送是发送完一条再发送另一条的,怎么会连在一起,没弄明白LZ的意思 我是用一个变量接收内容,结果得到的是这样的效果,
$A="A",$B="B"
收到的是AB不是
A
B
这样的结果.不知道说明白没有. 我写了一段代码,测试没你说的那个问题
发送端:
dim $atemp
For $i=0 To 2
$atemp[$i] = string($i+1)
Next
$atemp = "end"
TCPStartup ()
If @error = -1 Then Exit
For $i=0 To 3
$socket = TCPConnect (@IPAddress1,65431)
$send = TCPSend ($socket,$atemp[$i])
Next
TCPCloseSocket ($socket)
TCPShutdown ()
$temp = ""
For $i=0 To 3
$temp &= $atemp [$i]&@CRLF
Next
MsgBox (0,"发送端",$temp)
循环连续发送4个数组元素
接收端:
Dim $atemp
For $i=0 to 3
$atemp [$i] = 0
Next
TCPStartup ()
$socket = TCPListen (@IPAddress1,65431)
If @error = -1 Then Exit
$i=0
While 1
$connect = TCPAccept($socket)
$data = TCPRecv ($connect,1024)
ToolTip ($data&@crlf&$i)
If $data Then
$atemp[$i] = String($data)
$i += 1
If $data == "end" Then ExitLoop
EndIf
WEnd
TCPCloseSocket ($socket)
TCPShutdown ()
$temp = ""
For $i=0 To 3
$temp &= $atemp [$i]&@CRLF
Next
MsgBox (0,"接收端",$temp)
显示是正常的,并没有连在一起 问题已经解决,说下原理不发原码了.
发送端在发送一条之后进入一个等待循环,等待接收端接之后发送回一个字符,什么字符都可以.收到这个字符之后再发送下一条.这样就快了很多.而且不会出现连接在一起的问题. 确实有这个问题的。 TCP发送接收
页:
[1]