c# - TCP/IP significant data loss. Am I sending too much ? Beginner TCP/IP programmer -
this question has answer here:
i beginner when comes tcp/ip applications. i'm coding game , added network multiplayer. used tcplistener , tcpclient objects system.net.sockets implement networking. game works great when test on localhost or lan. later, tested on greater distance: between pc , azure vm. results shocking. client received 7% of messages sent server. server received 84% of messages. know tcp/ip doesn't understand message because sends data stream. consider message:
networkstream networkstream = clientsocket.getstream(); networkstream.write(_bytes, 0, _bytes.length); //_bytes array of bytes networkstream.flush(); my server sends 20-40 messages per second 99% of them 10-15 bytes long. client sends ~4 messages per second. machine has access fast , reliable internet connection. guess windows azure data center should have connection well. how can improve network performance of application ?
edit: how client receiving messages:
networkstream serverstream = clientsocket.getstream(); byte[] instream = new byte[10025]; serverstream.read(instream, 0, instream.length); i realized might interpretation error, meaning data received it's somehow misinterpreted. instace, send inside message number represents total count of sent messages. number interpreted fine 7% of messages received cleint. however, messages received server have strange numbers in them. example received message 31,32,33 , 570425344 35 , 0. guess bytes might offset. don't know how , why happen.
you might not data in 1 chunk. use code
var actualreceivedlength = serverstream.read(instream, 0, instream.length); and read actualreceivedlength know how received, call read again until have read as expect.
Comments
Post a Comment