Toisella koneella käynnistin servu-ohjelman:
Code: Select all
SCREEN 400,100
// Sisällytetään kirjasto
Include "cbNetwork.cb"
// Määritellään vakiot
Const UDP_PORT = 1337 // Portti, jota käytetään
Const INFO_STARTING_CONNECTION = 255
Const INFO_CLOSING_CONNECTION = 254
Const INFO_WANT_RESULT = 253
SAFEEXIT OFF
SetWindow "Serveri"
// Käynnistetään serveri
rtn = InitServer( UDP_PORT, 100 )
// Virheen sattuessa lopetetaan virheilmoitukseen
If rtn <> 0 Then MakeError GetNetErrorString( rtn )
Repeat
// Luetaan dataa clientilta
rtn = ServerRead()
If rtn = 0 Then // Kaikki ok
// Luetaan muistipalan alusta koko
_Net_GetInt()
// Luetaan infotavu muistipalasta
infoByte = _Net_GetByte()
If infoByte = INFO_STARTING_CONNECTION Then
SetWindow "Serveri - Yhteys muodostettu"
ElseIf infoByte = INFO_CLOSING_CONNECTION Then
SetWindow "Serveri - Client katkaisi yhteyden"
ElseIf infoByte = INFO_WANT_RESULT Then
luku1 = _Net_GetInt()
luku2 = _Net_GetInt()
operaattori$= Chr( _Net_GetByte() )
EndIf
// Alustetaan muistipala
_Net_InitMemBlock()
// Lähetetään infoByte takaisin
_Net_PutByte( infoByte )
If infoByte = INFO_WANT_RESULT Then
Select operaattori
Case "+" : result = luku1 + luku2 // Yhteenlasku
Case "-" : result = luku1 - luku2 // Vähennyslasku
Case "*" : result = luku1 * luku2 // Kertolasku
Case "/" : result = luku1 / luku2 // Jakolasku
End Select
// Kirjoitetaan vastaus muistipalaan
_Net_PutInt( result )
EndIf
// Lähetetään tiedot
ServerSend()
EndIf
Until EscapeKey() // Suoritetaan kunnes painetaan esciä
SetWindow "Serveri - Serveriä suljetaan..."
// Odotetaan, että esc-nappula vapautetaan
While EscapeKey() : Wend
// Suljetaan serveri
CloseServer()
Code: Select all
SCREEN 400,100
// Sisällytetään kirjasto
Include "cbNetwork.cb"
// Määritellään vakiot
Const UDP_PORT = 1337 // Portti, jota käytetään
Const INFO_STARTING_CONNECTION = 255
Const INFO_CLOSING_CONNECTION = 254
Const INFO_WANT_RESULT = 253
SAFEEXIT OFF
SetWindow "Client"
rtn = InitClient("TOISEN KONEEN IP-OSOITE", UDP_PORT, 100 )
If rtn <> 0 Then MakeError GetNetErrorString( rtn )
// Lähetetään serverille viesti, että linjoilla ollaan.
_Net_InitMemBlock()
_Net_PutByte(INFO_STARTING_CONNECTION)
ClientSend()
Dim lasku As String, lastLasku As String
AddText "Esim. 5 + 6"
AddText ""
Repeat
lasku = Input("Lasku: ")
If lastLasku<>"" Then Text 0,60,lastLasku+" = "+lastResult
DrawScreen
If KeyHit(cbKeyReturn) Then
// Siistitään lasku
lastLasku = Replace(lasku," ","")
lastLasku = Replace(lastLasku,"+"," + ")
lastLasku = Replace(lastLasku,"-"," - ")
lastLasku = Replace(lastLasku,"*"," * ")
lastLasku = Replace(lastLasku,"/"," / ")
CloseInput
lasku = Input("Lasku: ")
// Parsitaan laskusta tiedot
luku1 = Int( GetWord(lastLasku, 1) )
luku2 = Int( GetWord(lastLasku, 3) )
operaattori = Asc( GetWord(lastLasku, 2) )
// Alustetaan muistipala
_Net_InitMemBlock()
// Kirjoitetaan muistipalaan, että halutaan tulos
_Net_PutByte( INFO_WANT_RESULT )
// Kirjotetaan tiedot muistipalaan
_Net_PutInt(luku1)
_Net_PutInt(luku2)
_Net_PutByte(operaattori)
// Lähetetään data
ClientSend()
EndIf
// Luetaan dataa serveriltä
rtn = ClientRead()
// Luetaan muistipalan alusta koko
_Net_GetInt()
// Jos kaikki meni niinkuin pitikin
If rtn = 0 Then
// Haetaan infotavu
infoByte = _Net_GetByte()
If infoByte = INFO_STARTING_CONNECTION Then
SetWindow "Client - Yhteys muodostettu"
ElseIf infoByte = INFO_WANT_RESULT Then
lastResult = _Net_GetInt() // Luetaan tulos muistipalasta muuttujaan.
EndIf
EndIf
Until EscapeKey() // Suoritetaan kunnes painetaan esciä
CloseInput
// Alustetaan muistipala
_Net_InitMemBlock()
// Kirjoitetaan poistumisviesti muistipalaan
_Net_PutByte(INFO_CLOSING_CONNECTION)
// Lähetetään tiedot
ClientSend()