Preventing crash on close stream

BlitzMax Forums/BlitzMax Programming/Preventing crash on close stream

Try this test server/client (compile both without gui app - these are meant for console). Press ctrl-c to disconnect on windows (end program)

Server:-
SuperStrict

Global serverSocket:TSocket = CreateTCPSocket()
serverSocket.Bind( 24010 )
serverSocket.Listen(0)

Global serverStream:TStream = CreateSocketStream( serverSocket )
Global clientList:TList = New TList

Function ServiceClients()
	For Local client:TSocketStream = EachIn clientList
		If Eof(client )
			Print "Client " + client.ToString() + " disconnected"
			client.close()
			clientList.Remove( client )
			client = Null
		Else
			If SocketReadAvail( client.Socket() )		
				Local line:String = client.ReadLine()
				If line
					Print "Msg from client " + client.ToString() + " :" + line
					client.WriteLine( line )
				EndIf
			EndIf
		EndIf
	Next
EndFunction

Print "Server running. Waiting for connections."
Repeat
	Local socket:TSocket = SocketAccept( serverSocket, 10 )
	If socket
		Local stream:TSocketStream = CreateSocketStream(socket)
		clientList.AddLast( stream )
		Print "Client " + stream.ToString() + " connected"
	EndIf
	
	ServiceClients()
Forever


Client:-
SuperStrict

Global stream:TStream

Print "Attempting to connect to server..."
Repeat
	If Not stream
		stream = TSocketStream.CreateClient( "localhost", 24010 )
		If stream 
			Print "Connected to server"
		EndIf
	Else
		If Eof( stream )
			Print "Server disconnected. Reconnecting..."
			stream.Close()
			stream = Null
		Else
			Local s:String = Input( "Msg to server :" )
			stream.WriteLine(s)
			Local line:String = stream.ReadLine()
			If line
				Print "Response from server :"+line
			EndIf
		EndIf
	EndIf	
Forever