Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Chat ohjelma

Jorgga [18.05.2006 17:47:21]

#

Joo eli tässä olen tehnyt tälläistä chattiä väsäilly mutta tuli mieleen että voiko samassa ohjelmassa olla server ja cilient? Nyt olen tenhyt tälläisen yksinkertaisen jossa molemmat on samassa ohjelmassa. Serverin tekeminen onnistuu mutta kun yritän mennä (siis olen avannut toisen kerran tämän ohjelman eli kaksi kertaa sama ohjelma auki) niin se antaa virheilmoitukseksen:

"Invalid operation at current state"

ja vb maalaa koodista kohdan

"Winsock1.RemotePort = 8000 'Portti"

kyseinen kohta löytyy Form loadista:

Private Sub Form_Load()
'Yhdietetään winsock 1 viesteille
Winsock1.Connect Form2.Text1.Text 'ip joka on määritetty kakkos formissa
Winsock1.RemotePort = 8000 'Portti
Winsock1.Connect 'Yhdistä komento

'yhdiestään winsock 2 nikille
Winsock2.Connect Form2.Text1.Text 'ip joka on määritetty kakkos formissa
Winsock2.RemotePort = 8001 'Portti
Winsock2.Connect 'Yhdistä komento
End Sub

Apuja kaivataan

Tumppu [18.05.2006 19:26:44]

#

ei taida olla mahdollista (en tosiaankaan oo varma), mut suosittelisin että jos chatin meinaat tehdä, että käyttäisit php:tä (mikäli on kotisivut jossa tuki php:lle) sillä nykyään lähes kaikilla on adsl:t niin niissä pitäisi (melkeen kaikissa) avata portit, että se sallisi sisääntulevan liikenteen..

Gaxx [18.05.2006 21:31:04]

#

Ensimmäinen ohjelma on jo varannut portin 8000( ja 8001) käyttöönsä, joten jälkimmäinen ohjelma ei voi käyttää niitä. Lisäksi en oikein ymmärtänyt ohjelman ideaa. Yhdistäminen onnistuu ihan yhdellä rivillä:

winsock1.connect "100.100.100.100", 8000

Serverin avaamiseen tarvitaan jopa kaksi riviä

winsock1.locaport = 8000
winsock1.listen

Sama ohjelma voi olla serveri ja clientti, kunhan pidät huolen, että et käytä samalla koneella servereille samaa porttia. Jos portti ei ole aina vakio, tästä voi koitua se hankaluus, ettet tiedä, mihin porttiin milloinkin pitäisi yhdistää.

Pöytälamppu [18.05.2006 21:46:26]

#

Kuten yllä mainittiinkin yrität rähmiä jo olemassa olevan yhteyden porttia, joka ei tietenkään onnistu.

Koodista ymmärsin että luot omat yhteydet nickin ja viestien lähettämiseen, vinkkinä sanoisin, että ei kannata pitää turhan monia yhteyksiä clientin ja serverin välillä. Laita ennemmin jokaisen viestin eteen "MSG" ja nickin eteen vaikka "NICK". Näin serveri saa tietää mitä clientti lähettää, eikä turhia yhteyksiä tarvitse luoda. Serveri voi sitten poistaa viesteistä nämä merkinnät, etteivät ne näy viesteissä ja nickissä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta