Listing 7-6 on how to set up this separate thread). Listing 7-11 shows how this method looks for data and then converts it into a ReversiPiece class instance.
Listing 7.11: Deserializing Data from the TCPClient and Rehydrating Back into a ReversiPiece Object Instance
Public Sub LookForTurn()
Do
If FStream.DataAvailable Then
Dim cPiece As String
Dim oPiece As New ReversiPiece
Dim oSer As New XmlSerializer(oPiece.GetType)
Dim oRead As StreamReader
oRead = New StreamReader(FStream)
cPiece = oRead.ReadLine
oPiece = oSer.Deserialize(New StringReader(cPiece))
RaiseEvent MyMoveLoc(Me, oPiece.Location.X, oPiece.Location.Y)
End If
System.Threading.Thread.Sleep(250)
Loop Until False
End Sub
This method reverses the process found in the SendMyTurnToOpponent method. It first uses the ReadLine method of the TCPClient class to retrieve a complete line of text from the network connection (remember, the XML class definition exists in a single line of text because you removed all of the carriage return/line feeds). This string is stored in the string variable cPiece. Then, an XMLSerializer class instance converts the string variable back into a ReversiPiece instance named oPiece.After retrieving the ReversiPiece object, the code raises the event that moves the current player, MyMoveLoc. This event handler requires the player moving and the x, y coordinate of the piece to which the player is moving. The coordinates from the ReversiPiece object that were sent over the wire are the coordinates sent to the event handler.