当仍有数据传入时,Sockets.receive停止接收

时间:2019-08-29 08:48:05

标签: asp.net vb.net sockets sql-server-2008-r2

我必须将字符串从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

我需要传输所有数据,或者至少需要一条错误消息,这样我才能解决问题。

0 个答案:

没有答案
相关问题