Socket如何连续send?
vb.net吧
全部回复
仅看楼主
level 1
蓝梦妖蝶 楼主
发送端
Try
Dim bytes(1024) As Byte
Dim ss = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim localEndPoint As New IPEndPoint(IPAddress.Parse(NET_txtIP.Text), NET_txtPT.Text)
ss.Connect(localEndPoint)
If NET_txtSD.Text.Length > 511 Then
For i = 0 To Int(NET_txtSD.Text.Length / 511)
ss.Send(Encoding.Unicode.GetBytes(Mid(NET_txtSD.Text, 511 * i + 1, 511)))
Next
Else
ss.Send(Encoding.Unicode.GetBytes(NET_txtSD.Text))
End If
ss.Close()
Catch ex As Exception
End Try
接收端(新线程)
s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) '使用TCP协议
Dim localEndPoint As New IPEndPoint(IPAddress.Parse(test_ip), test_port) '指定IP和Port
s.Bind(localEndPoint) '绑定到该Socket
s.Listen(100) '侦听,最多接受100个连接
While (True)
Dim bytes(1024) As Byte
Dim ss As Socket = s.Accept()
ss.Receive(bytes, bytes.Length, 0) '接收数据,若用ss.send(Byte()),则发送数据
Dim received As String = Encoding.Unicode.GetString(bytes)
Call NET_test(received)‘显示数据
End While
结果是text大于512字节,就收不全。只能收到第一部分。这个应该如何处理?
2018年11月07日 07点11分 1
level 1
蓝梦妖蝶 楼主
可以通过bytes(1024)改大解决。但是数据要大很多。如果才能保证数据正确全部接收呢?
2018年11月07日 08点11分 2
level 11
看receive函数说明啊
2018年11月08日 18点11分 3
谢谢。看了,但是没有找到相关内容。sorry,我本来是做硬件的,临时做些这些事情,很多事不是很了解。您给细说一下吗?
2018年11月12日 02点11分
1