Hi Guys, I'm having some difficulties with developing a solid network interface in Unity using C# (before you ask, yes, I'm developing my own network stuff as I have some specific needs). I have an object which lurks on the playing field with a script attached to it (by the name NetworkLayer.cs), occasionally the user may need to change map, and I am doing so thusly: // called from the network obj script DontDestroyOnLoad(this); Application.LoadLevel("some level"); The network stuff itself is using the C# TcpClient class (will do UDP also later, but one thing at a time) and data is sent/recieved using the Stream class. Just to really spice things up, I achieve my non-blocking fun via means of a service thread which allows me to listen on the network for messages while allowing the game to run as expected. Said functionality is from the Thread/ThreadStart stuff. So far, so normal C#. Nothing particularly thrilling here. However I am recieving some really weird funk whenever I switch map. SOMETIMES it works flawlessly and I am transferred to the next map without error and the connection stays alive. However, sometimes I am thrown clean out with the following exception: System.IO.IOException: Read Failure ---> System.Net.Sockets.SocketException: The descriptor is not a socket at System.Net.Sockets.Socket.Recieve(System.Byte buf,Int32 offset,Int32 size,SocketFlags flags) [0x00000] Arrrgh the dreaded null! I'm definitely not killing threads or objects myself so I don't understand what I'm doing wrong. The read thread is infact still alive and quite happy despite all this (as it is this thread that informs me of the exception). The Network Object itself *should* (and in the inspector appears to) remain in the next map, and it's even weirder that the error happens on random occasion. To me, it sounds like the socket itself has been destroyed in some hideous fashion but I am unsure how/why it's destroying other than switching map is causing it. Any ideas? Many thanks in advance!