我必须将字符串从asp.net Web应用程序传输到VB.NET Desktop应用程序。数据已完全发送,但接收端在大约8 kB数据后停止。没有错误消息,它只会忽略其余数据。
传输的字符串是用分号分隔的打印指令和数据列表。通常,字符串的大小约为1至1.5kb。但是现在我们也必须转移客户签名。这样平均会将数据“炸毁”到大约15kb。
我们正在使用System.Net.Sockets.Socket。
在我的开发系统Windows 10上,它可以正常工作。在较旧的计算机Windows Server 2008-R2(我们的客户端计算机)上,数据被删减。
该软件在Web-App端使用.Net 4.7.2进行编译,在Desktop端使用4.5进行编译。
我们用Wireshark跟踪了传输,看来接收方恰好接收了6个TCP程序包,然后忽略了其余的程序包。没有错误消息,也没有断开连接。
我尝试更改“发送/接收参数”以包含错误标志,但始终返回确定。使用不带参数的发送/接收结果相同。
从网站发送代码:
Try
remoteEP = New IPEndPoint(_ipAddress, _listenPort)
clientSocket.SendTimeout = 2000
clientSocket.Connect(remoteEP)
clientSocket.Send(Encoding.ASCII.GetBytes(dataString), 0,
Encoding.ASCII.GetBytes(dataString).Count,
SocketFlags.None, SendError)
Catch ex As Exception
log.Fatal("IP socket init. failed", ex)
Finally
clientSocket.Close()
End Try
从Printer-App接收代码
//Wait for incoming Data
clientSocket = server.Accept
//Signal receiving state to the frontend.
setReceiving()
ReDim receivedBytes(100001)
//Wait a second to make sure everything has been transferred
Threading.Thread.Sleep(1000)
Dim SError As SocketError
clientSocket.ReceiveTimeout = 1000
Try
receivedBytesLength = clientSocket.Receive(receivedBytes, 0,
100001, SocketFlags.None, SError)
Catch ex As SocketException
log.Debug("startReceiver - ReceiveTimeout erreicht", ex)
End Try
我需要传输所有数据,或者至少需要一条错误消息,这样我才能解决问题。