c# - Why is my web socket receiving data packets in the wrong order? -


i have c# desktop app sends jpegs server @ rate of 10 per second.

each jpeg has time stamp part of header , read server.

i experiencing disorderly arrival on server.

the majority of time jpegs received sever in order have been sent client.

but, every , order becomes 'jumbled'.

are tcp packets supposed guaranteed sent in order or subject delays network/internet?

if order guaranteed post code.

thanks

my code:

on client:

   class websocketclient {     static websocket websocket = null;     public static void start()     {         try {             console.writeline("started at: " + datetime.now.tostring());             if (websocket != null)             {                 websocket.dispose();             }             websocket = new websocket("ws://a uri");             websocket.opened += new eventhandler(websocketclient_opened);             websocket.error += websocket_error;             websocket.closed += new eventhandler(websocketclient_closed);             websocket.messagereceived += new eventhandler<messagereceivedeventargs>(websocketclient_messagereceived);             websocket.open();         }         catch (exception ex)         {             console.writeline(ex.tostring() + " debug#8");         }     }      private static bool timeoutoccured = false;     private static datetime stopped;     public static void send(byte[] packet)     {          try         {             if (websocket.state == websocketstate.open)             {                 if (packet != null)                 {                     websocket.send(packet, 0, packet.length);                 }                 timeoutoccured = false;             }             else             {                 if (timeoutoccured)                 {                     console.writeline("timeout at: " + datetime.now.tostring());                     if ((datetime.now - stopped).totalseconds > 30)                     {                         websocket.opened -= new eventhandler(websocketclient_opened);                         websocket.error -= websocket_error;                         websocket.closed -= new eventhandler(websocketclient_closed);                         websocket.messagereceived -= new eventhandler<messagereceivedeventargs>(websocketclient_messagereceived);                         start();                     }                 }                 else                 {                     timeoutoccured = true;                     stopped = datetime.now;                 }             }         }         catch (exception ex)         {             console.writeline(ex.tostring() + " debug#9");         }     }      static void websocket_error(object sender, supersocket.clientengine.erroreventargs ex)     {         try {             console.writeline("error at: " + datetime.now.tostring());             shared.adderror("websocketclient.websocket_error", ex.exception);         }         catch (exception x)         {             console.writeline(x.tostring() + " debug#10");         }     }     protected static void websocketclient_messagereceived(object sender, messagereceivedeventargs e)     {         try {             var m_currentmessage = e.message;         }         catch (exception ex)         {             console.writeline(ex.tostring() + " debug#11");         }      }     protected static void websocketclient_closed(object sender, eventargs e)     {         try         {             console.writeline("closed at: " + datetime.now.tostring());             if (websocket.state == websocketstate.closed)             {                 system.threading.thread.sleep(1000);                 start();             }         }         catch (exception ex)         {             console.writeline(ex.tostring() + " debug#12");         }     }     protected static void websocketclient_opened(object sender, eventargs e)     {         console.writeline("opened at: " + datetime.now.tostring());     } } 

my server code:

 public void start2()     {         try         {             var server = new websocketserver("my wan uri");              ilog logger = logmanager.getlogger(typeof(flecklog));              flecklog.logaction = (level, message, ex) =>             {                 switch (level)                 {                     case loglevel.debug:                         //gger.debug(message, ex);                         break;                     case loglevel.error:                         socketmessage("3", message, ex);                         break;                     case loglevel.warn:                         socketmessage("4", message, ex);                         break;                     default:                         socketmessage("5", message, ex);                         break;                 }             };              server.start(socket =>             {                 socket.onopen = () => evstatuschanged("open!");                 socket.onclose = () => evstatuschanged("close!");                 socket.onerror = error =>                     {                         console.writeline("debug:1 " + error.tostring());                     };                 socket.onbinary = packetin =>                     {                         try                         {                           //i check timestamps in headers here                         }                         catch (exception ex)                         {                             console.writeline(ex.tostring() + " serverwebsocket.websocketserver_newdatareceived.catch3");                         }                     };                 socket.onmessage = message =>                 {                  };             });         }         catch (exception ex)         {             console.writeline(ex.tostring() + " serverwebsocket.start2");         }     } 

i using websocket4net client socket framework


Comments

Popular posts from this blog

html - Firefox flex bug applied to buttons? -

html - Missing border-right in select on Firefox -

python - build a suggestions list using fuzzywuzzy -