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
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..
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ää.
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.