Sockets

BlitzMax Forums/BlitzMax Programming/Sockets

splinux(Posted 2006) [#1]
I'm having troubles making two programs communicate with sockets.
I'm trying two programs, a client and a server.
Here is the code i'm using.
They perfectly work, but when i close them their executables are still running.
Could someone help me?
Client:
Global port:Long=1125

stream : TSocketStream = TSocketStream.CreateClient("localhost", port)
If Not stream Then
	RuntimeError("Error creating socket")
EndIf

If Not stream End

	stream.WriteLine "GET / HTTP/1.1~r~n"
	stream.WriteLine "hi~r~n"
	stream.WriteLine "Host: 127.0.0.1~r~n"
	stream.WriteLine "~r~n"

While Not Eof( stream )
	'If Not stream.ReadLine() Exit
	Print Stream.Readline()
Wend


stream.close()
stream = Null

End
[/CODE]

Server:
[CODE]
Global receive:TSocket = CreateTCPSocket()
Global port:Long=1125

If (Not BindSocket(receive, port))
	Print("Error. Someone might already be using port"+port+".")
	End
End If


Print "Server started."
SocketListen(receive)





While True
  Local clientSock:TSocket = SocketAccept(receive, 0)
  If (clientSock <> Null)
    Print("Client "+DottedIP(SocketRemoteIP(clientSock))+" connected!")
    Local clientStream:TSocketStream = CreateSocketStream(clientSock)

    Local line:String = ReadLine(clientStream)
	Print(line)

    FlushStream(clientStream)
    'CloseStream(clientStream)
	'CloseSocket(clientSock)
  EndIf
Wend


 

CloseSocket(receive)
CloseSocket(clientSock)
'CloseStream(clientStream)
'CloseSocket(clientSock)



End


Another problem is that the client can only send a line of text, and then nothing get sent.


Please someone help me.


splinux(Posted 2006) [#2]
Ok.
I found the problem and corrected.

The first problem was because i wasn't in graphics mode, and KEY_ESCAPE didn't worked for this reason.
The second was simply corrected doing while not eof(stream).