Tämä on ensimmäinen koodivinkkini ja kaikenlisäksi vielä oma ensimmäinen vähän isompi työ
Tässä on kaksi ohjelmaa Client ja Server
Tämä on vain kahdenkoneenkeskusteluohjelma, johon on lisätty pieni jäynä ominaisuus Client.hyväksi :D
Pahempia bugeja ei pitäisi olla mutta toisaalta
yhden asian voi tehdä aina niin monella eri tavalla.
Jahas ja mitä sitä tarvitaan
(Tärkeimmät)
Client:
4 TextBox.ia
TextVast
TextSend
TextIp
TextPort
5CommandButton.ia
ComTyh2
ComEnd
CmdCd
ComStop
ComAvaa
2Shape.a
off
Toimii
Winsock.s
Winsock1
Winsock2
Server:
4 TextBox.ia
TextVast
TextSend
TextIp
TextPort
3CommandButton.ia
ComTyh2
CmdPortti
ComEnd
2Shape.a
off
Toimii
Winsock.s
Winsock1
Winsock2
Client
Option Explicit
Private Sub CmdCd_Click()
'Tässä tarkistetaan mitä nappulassa lukee ja sitten toimitaan sen mukaan
If CmdCd.Caption = "Avaa CD" Then
Winsock2.SendData "CDAvaa"
CmdCd.Caption = "Sulje CD"
Else
Winsock2.SendData "CDSulje"
CmdCd.Caption = "Avaa CD"
End If
End Sub
Private Sub ComAvaa_Click()
Winsock1.Close 'suljetaan varmuudenvuoksi
Winsock2.Close 'suljetaan varmuudenvuoksi
Winsock1.Connect TextIp.Text, TextPort.Text 'yhdistetään TextIp kentäs olevaan ip numeroon ja sitten käytetään TextPort kentässä olevaa porttia
Winsock2.Connect TextIp.Text, 8001 'yhdistetään TextIP kentäs olevaan ip numeroon ja käytetään porttia 8001
TextSend.Enabled = True 'TextSend kenttä on "käytettävissä"
Toimii.Visible = True 'Näytetään vihreä lamppu
off.Visible = False 'Piilotetaan punainen lamppu
TextSend.Enabled = True 'TextSend kenttä on käytettävissä
TextVast.Enabled = True 'TextVast kenttä on käytettävissä
CmdCd.Enabled = True 'CD aseman avaus nappula on aktiivinen
End Sub
Private Sub ComEnd_Click()
Winsock1.Close 'suljetaan kaikki yhteyden
Winsock2.Close 'suljetaan kaikki yhteyden
End 'lopetetaan ohjelma
End Sub
Private Sub ComStop_Click()
Winsock1.Close 'suljetaan kaikki yhteyden
Winsock2.Close 'suljetaan kaikki yhteyden
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True 'Näytetään punainen lamppu
CmdCd.Enabled = False 'CD aseman avaus nappula ei ole aktiivinen
End Sub
Private Sub ComTyh2_Click()
TextVast.Text = "" 'tyhjennetään TextVast alue
End Sub
Private Sub Form_Load()
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True 'Näytetään punainen lamppu
CmdCd.Enabled = False 'CD aseman avaus nappula ei ole aktiivinen
TextPort.Text = "3456" 'TextPort.iin laitetaan 3456 oletukseksi
End Sub
Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close 'Winsock1 suljetaan
Winsock2.Close 'Winsock2 suljetaan
End 'ohjelma lopetetaan
End Sub
Private Sub MenCdClose_Click()
Winsock2.SendData "suljecd" 'lähettää serverille et pitää sulkea cd asema
End Sub
Private Sub MenCdOpen_Click()
Winsock2.SendData "avaacd" 'lähettää serverille et pitää avata cd asema
End Sub
Private Sub TextSend_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then 'jos painetaan Enteriä niin lähetetään TextSend kentässä oleva tieto Serverille
KeyAscii = 0
Winsock1.SendData "Client: " & TextSend.Text 'lähetetään tieto mikä on TextSend kentässä
TextVast.Text = TextVast.Text & "Client: " & TextSend.Text & vbCrLf 'lisätään lähetetty teksit myös TexVastaa tyyliin: Client: TextSend
TextVast.SelStart = Len(TextVast.Text)
TextSend.Text = "" 'TextSend tyhjennetään tekstistä
End If
End Sub
Private Sub Winsock1_Close()
'Winsock1 sulkeutuu niin suoritetaan seuraavat toiminpiteet
If Winsock1.State <> sckNotConnected Then
Winsock1.Close
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True ' Näytetään punainen lamppu
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
CmdCd.Enabled = False 'CD aseman avaus nappula ei ole aktiivinen
End If
End Sub
Private Sub winsock1_DataArrival(ByVal bytesTotal As Long)
'Kun Winscok1 ottaa vastaan dataa niin tehdään seuraavat toiminnot
Dim Command As String
Winsock1.GetData Command 'Data on nimetty Command.iksi
TextVast.Text = TextVast.Text & Command & vbCrLf
TextVast.SelStart = Len(TextVast.Text)
End Sub
Private Sub winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True 'Näytetään punainen lamppu
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
CmdCd.Enabled = False 'CD aseman avaus nappula ei ole aktiivinen
MsgBox "Serveriä ei löydy" 'Annetaan ilmoitus ettei servua löydy
End Sub
Private Sub Winsock2_Close()
'Winsock2 sulkeutuu niin suoritetaan seuraavat toiminpiteet
If Winsock2.State <> sckNotConnected Then
Winsock2.Close
Winsock2.Listen
End If
End Sub
Private Sub Winsock2_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True 'Näytetään punainen lamppu
CmdCd.Enabled = False 'CD aseman avaus nappula ei ole aktiivinen
MsgBox "Ei yhteyttä" 'Annetaan ilmoitus
End SubServer
Option Explicit
Private Sub CmdPortti_Click()
Winsock1.Close 'Winsock1 suljetaa
Winsock2.Close 'Winsock2 suljetaa
Winsock1.LocalPort = TextPort.Text 'käytetään haluttua porttia joka on syötetty TextPort kenttään
Winsock1.Listen 'Winsock1 kuuntelee
Winsock2.Listen 'Winsock2 kuuntelee
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True ' Näytetään punainen lamppu
End Sub
Private Sub ComEnd_Click()
Winsock1.Close 'Winsock suljetaa
Winsock2.Close 'Winsock suljetaa
End ' Ohjelma lopetetaan
End Sub
Private Sub ComTyh2_Click()
TextVast.Text = "" 'tyhjennetään TextVast kenttä
End Sub
Private Sub Form_Load()
Winsock1.Close 'Winsock suljetaa varmuudenvuoksi
Winsock2.Close 'Winsock2 suljetaa varmuudenvuoksi
TextPort.Text = "3456" 'TextPort.iin laitetaan 3456 oletukseksi
TextIp.Text = Winsock1.LocalIP 'näytetään koneen ip osoite TextIp kentässä
Winsock1.LocalPort = TextPort.Text 'TextPort.Text oleva numero on portti jota käytetään
Winsock1.Listen 'Winsock kuuntelee
Winsock2.LocalPort = 8001 'määritellään Winscok2.selle portti 8001
Winsock2.Listen 'Winsock2 kuuntelee
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True ' Näytetään punainen lamppu
End Sub
Private Sub Form_Unload(Cancel As Integer)
Winsock1.Close 'Winsock suljetaa
Winsock2.Close 'Winsock2 suljetaa
End Sub
Private Sub TextSend_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then 'jos painetaan Enteriä niin lähetetään TextSend kentässä oleva tieto Clientille
KeyAscii = 0
Winsock1.SendData "Server: " & TextSend.Text 'lähetetään tieto mikä on TextSend kentässä
TextVast.Text = TextVast.Text & "Server: " & TextSend.Text & vbCrLf 'lisätään lähetetty teksit myös TexVastaa tyyliin: Server: TextSend
TextVast.SelStart = Len(TextVast.Text)
TextSend.Text = "" 'Tyhennetään TextSend kenttä
End If
End Sub
Private Sub winsock1_Close()
If Winsock1.State <> sckNotConnected Then
Winsock1.Close
Winsock1.Listen
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True ' Näytetään punainen lamppu
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
End If
End Sub
Private Sub winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then
Winsock1.Close
End If
Winsock1.Accept requestID
TextSend.Enabled = True 'TextSend kenttä on käytettävissä
TextVast.Enabled = True 'TextVast kenttä on käytettävissä
Toimii.Visible = True ' Näytetään vihreä lamppu
off.Visible = False ' Piilotetaan punainen lamppu
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'Kun Winscok1 ottaa vastaan dataa niin tehdään seuraavat toiminnot
Dim txt As String
Winsock1.GetData txt 'Data on nimetty txt.iksi
TextVast.Text = TextVast.Text & txt & vbCrLf
TextVast.SelStart = Len(TextVast.Text)
End Sub
Private Sub winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
MsgBox "Ei yhteyttä"
Toimii.Visible = False 'Piilotetaan vihreä lamppu
off.Visible = True 'Näytetään punainen lamppu
TextSend.Text = "" 'Tyhennetään TextSend kenttä
TextSend.Enabled = False 'TextSend kenttä on "suljettu"
TextVast.Enabled = False 'TextVast kenttä on "suljettu"
End Sub
Private Sub Winsock2_Close()
'Winsock2 sulkeutuu niin suoritetaan seuraavat toiminpiteet
If Winsock2.State <> sckNotConnected Then
Winsock2.Close
Winsock2.Listen
End If
End Sub
Private Sub Winsock2_ConnectionRequest(ByVal requestID As Long)
If Winsock2.State <> sckClosed Then
Winsock2.Close
End If
Winsock2.Accept requestID
End Sub
Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long)
'tämä on tärkein osa, jotta jekku juttu toimisi oikein
Dim x As String
Dim data As String
Dim Command As String
Winsock2.GetData Command
Select Case Command
Case "CDAvaa" 'avaa cd aseman :D
x = mciSendString("Set CDAudio Door Open", "", 0, 0)
Case "CDSulje" 'Sulkee cd aseman :D
x = mciSendString("Set CDAudio Door Closed", "", 0, 0)
End Select 'Lopetetaan
End SubServer, Module1
'Ohjelmassa käytettävät funktiot 'Päätin laittaa tämän tänne "selkeyden" kannalta 'cd-avaaja alku Declare Function mciSendString Lib "WINMM.DLL" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long 'cd-avaajan loppu
Makea ohjelma mutta seuraavaan versioon ehotan, että käytät tätä https://www.ohjelmointiputka.net/koodivinkit/
Öh... MIten sä sisennät? :)
näyttää ihan kivalta ohjelmalta, en ole ehtinyt kokeilla kun ei ole tässä koneessa vb:tä
mutta tuntuu että optimoimisen varaa on ja ehkä pikkasen "liikaa" kommentointia, siis eihän siinä mitään pahaa ole mutta niinkin looginen asia kuin:
Private Sub Winsock2_Close()
'Winsock2 sulkeutuu niin suoritetaan seuraavat toiminpiteet
eiköhän jokainen tajua että supin sisällä kun on jotain niin se on toimenpide joka aktivoituu kun supi alkaa häiriköimään softaa...
mutta kokeilen joskus ja annan ehkä joskus jotain fiksuu palautettakin :)
hyvä idea kummiskin, helppo ja aloittelijatkin(niinkuin myös kokeneemmat) pääsevät kokeilemaan kuinka kaksi eri ideaa voidaan sisällyttään yhteen projektiin hyvin :)
Sisennykset on kieltämättä aika ... persoonalliset
Ihan kiva, oon itekkin yrittäny tehä samantapasta.
tän paketin kyl saa ku kysäsee tarvittaes.
Juu... niin viittisitkö Cooleri laittaa paketin tuleen mulle : tronttu@hotmail.com tai sitte vaan linkkiä niin on muillekki hyätyä :D. Kiits.
Aihe on jo aika vanha, joten et voi enää vastata siihen.