| I wrote a small test to help me understand the way an internet game should look. But I can't get it to work. The client connects fine, but only the server can see the client and not vice versa. I think the server, once it recieves the new client message (type 100), doesn't send a message identifying the host (type 101) 
 Here's the code. Thanks for helping.
 
 
Graphics 800,600,32,2
SetBuffer BackBuffer()
Global host,udpport,destport,main,intip
Type pl
Field x,y
Field name$,port
End Type
Type netpl
Field x,y
Field name$,port,ip
End Type
host=Input ("host (1) or join (0)")
If host=1 Then
udpport=4000
destport=4001
Else
udpport=4001
destport=4000
EndIf
;create the stream
main=CreateUDPStream(udpport)
If main=0 Then RuntimeError "Could not create stream"
Print "Stream Created"
If host=0 Then
ip$=Input$ ("Host IP: ")
intip=DotToInt%(ip$)  ;NEEDS TO BE AN INT IP!
WriteLine main,"100"+name$
SendUDPMsg main,intip,destport   ;send "new player" message 
EndIf 
name$=Input ("UserName: ")
;make local player
p.pl=New pl
p\x=200
p\y=300
p\name$=name$
p\port=UDPStreamPort(main)
While Not KeyDown(1)
UpdatePlayers()
UpdateNetwork()
Cls 
Draw()
Flip
Wend
CloseUDPStream(main)
End 
Function UpdateNetwork()
HandleMessages()   ;check messages
SendMessages()    ;send messages
End Function 
Function HandleMessages()
If senderip=RecvUDPMsg(main) Then
	msg$=ReadLine$(main)
	DebugLog msg$
	Select Left(msg$,3)
		Case 100
			DebugLog "Player Found"
			;get rid of extranous info
			name$=Replace$(msg$,"100","")
			;new player!
			n.netpl=New netpl
			n\x=600
			n\y=300
			n\name$=name$
			n\port=UDPMsgPort(main)
			n\ip=UDPMsgIP(main)
			;send him the server info
			WriteLine main,"101"+name$
			DebugLog UDPMsgIP(main)
			SendUDPMsg main,DotToInt(UDPMsgIP(main)),destport
			;ADD OTHER PLAYER INFO SENT
		Case 101
			;client identifies host
			DebugLog "Host Found"
			;get rid of extranous info
			name$=Replace$(msg$,"101","")
			;make new player
			n.netpl=New netpl
			n\x=200
			n\y=300
			n\name$=name$
			n\port=UDPMsgPort(main)
			n\ip=UDPMsgIP(main)
		Case 200
			;movement massage
			coor$=Replace$(msg$,"200","")
			newx=Left(coor$,3)
			newy=Right(coor$,3)
			;find player
			For n.netpl=Each netpl
				If UDPMsgIP(main)=n\ip Then
				n\x=newx
				n\y=newy
				EndIf
			Next 
	End Select 
EndIf
End Function 
Function SendMessages()
For p.pl=Each pl
WriteLine main,"200"+LSet$(p\x,3)+LSet(p\y,3)   ;write coordinates to stream
If host=0 Then SendUDPMsg main,intip,destport
If host=1 Then
;cycle through clients
For n.netpl=Each netpl
SendUDPMsg main,n\ip,destport
Next
EndIf
Next
End Function 
Function UpdatePlayers()
For p.pl=Each pl
If KeyDown(200) Then p\y=p\y-2
If KeyDown(208) Then p\y=p\y+2
If KeyDown(205) Then p\x=p\x+2
If KeyDown(203) Then p\x=p\x-2
Next 
End Function 
;Function Chat()
;
;If Not KeyDown(203) Or Not KeyDown(205) Or Not KeyDown(200) Or Not KeyDown(208) Then
;key=GetKey()
;EndIf
;
;If key
;
;End Function 
Function Draw()
For p.pl=Each pl
Text p\x,p\y,"{"+p\name$+"}",1,1
Next
For n.netpl=Each netpl
Text n\x,n\y,"["+n\name$+"]",1,1
Next
End Function 
Function DotToInt%(ip$)
	off1=Instr(ip$,".")	  :ip1=Left$(ip$,off1-1)
	off2=Instr(ip$,".",off1+1):ip2=Mid$(ip$,off1+1,off2-off1-1)
	off3=Instr(ip$,".",off2+1):ip3=Mid$(ip$,off2+1,off3-off2-1)
	off4=Instr(ip$," ",off3+1):ip4=Mid$(ip$,off3+1,off4-off3-1)
	Return ip1 Shl 24 + ip2 Shl 16 + ip3 Shl 8 + ip4
End Function 
 
 |