VB Chat (met wat eisen)

Status
Niet open voor verdere reacties.

Danielxmovies

Gebruiker
Lid geworden
8 okt 2011
Berichten
300
Hallo,

Het is me wel een paar keer gelukt om chat te maken.
Maar dat waren FTP-Chats.

Die zijn erg langzaam en heel ingewikkeld om te zorgen dat ze niet writen en readen tegelijk.

Ik zou ook graag willen dat je op de computer waar het opstaat niet hoeft te port forwarden voor de port die de chat gebruikt.

Ook zou ik het liefst niet client-server willen hebben. Tenzij ik de server in de client kan inbouwen waardoor je maar 1 programma nodig hebt.

Heeft iemand een idee??
 
ja diet doet het bij mij goed maar 1 probleem.

Daar kan je zoveel clients als je wil maar je moet 1 server online hebben.

En dan moet ik eerst een manier bedenken om hem soort van in te bouwen in de client
 
De server-kant is de kant die eigenlijk alles kan wat je wilt.... Pas die een beetje aan en je hebt een chat achtig iets....

Dan is er nog een probleem: Hoe wil je zorgen dat je het ip-adres van de andere computer weet???
Want het zal je vast wel opgevallen zijn dat je het ip-adres van de andere computer nodig hebt...


Misschien kan je anders ook een PHP chat maken... Dat blijft volgens mij het makkelijkst....



Succes!
 
Maar is een PHP chat wel een optie?? Want daarbij heb je verder helemaal geen FTP nodig... Wel een server natuurlijk, maar geen FTP toegang met het programma.

Ook daar kunnen we je bij helpen!:thumb:
 
Das mooi

Waar moet ik het php bestandje dan inzetten.

Kan ik die niet gewoon neerzetten in Appdata op clients computer?
 
Als je inderdaad voor een PHP-chat gaat, dan moet je ergens een server hebben staan. PHP is namelijk een server-script en daarvoor moet het dus op een server staan. Ook heeft PHP een eigen engine die ook nodig is om PHP te kunnen gebruiken. Ik denk niet dat veel mensen een server hebben staan op hun pc en dan ook nog de PHP engine erop hebben geïnstalleerd, dus dat zal niet werken....

Hoe je wel een PHP-chat kan maken:

Zorg voor een server die PHP ondersteund (ik gebruik deze gratis: http://freehostingnoads.net/ , de knop om door te gaan staat onderaan)
Zorg voor een passend PHP script. Daar ga ik nu nog even verder niet op in, omdat jij dan eerst je keuze kan maken... En daar helpen wij je natuurlijk bij.
Dan kan je vervolgens met een programmaatje dingen (snel) op de server toevoegen/uitlezen. Dat zou in theorie ook met een webbrowser kunnen, maar dan moet je wel de adressen weten... Het enige wat je dus aan bandbreedte gebruikt, is hetzelfde als een webbrowser.


Dus, wat wordt het? Een PHP-chat of een 'directe' chat?
 
Ik ga eerst proberen mnet PHP chat.

Die site kan ik van alles doen maar ik kan nergens op.

Zou je me daarmee kunnen helpen.

En welke code moet ik doen voor PHP

Ik heb deze gevonden:

<?php

if (isset($_GET['bericht']))
{
$bericht = $_GET['bericht'];
file_put_contents("chatlog.txt", $bericht . "\r\n", FILE_APPEND);
}

?>

Van Captains Chat
 
Wat bedoel je hier precies mee?
Die site kan ik van alles doen maar ik kan nergens op.

Zou je me daarmee kunnen helpen.


Maar de PHP code die je hebt gevonden ziet er op zich goed uit. Alleen is het ook mogelijk dat de server .txt bestanden niet toestaat, maar dat zou je even kunnen controleren.
Ik zal als eerste even uitleggen wat de PHP code doet.

PHP:
<?php     //Begin PHP script

if (isset($_GET['bericht']))     //Hier wordt gekeken of de variable $_GET['bericht'] een waarde heeft. Zo ja, ga door. (onderaan nog meer uitleg over de variable)

{     //Begin if-block

$bericht = $_GET['bericht'];     //Variable $bericht instellen met de waarde van $_GET['bericht'].

file_put_contents("chatlog.txt", $bericht . "\r\n", FILE_APPEND);     //De waarde van $bericht wegschrijven in een textbestand

}     //Einde if-block

?>     //Einde PHP script

Dan nog even over de variablen in PHP. In PHP moeten alle variablen beginnen met een "$" (dollar teken). Je hoeft ze niet eerst te declareren.
Dan zijn er ook nog aparte variablen. Soms zie je in de adresbalk in je browser een webpagina staan met daarachter een "?" (vraagteken) en dan nog "naam=waarde". Dat is voor het PHP script. Als je reageert op mijn bericht, zal je het ook in de adresbalk zien. Die waarde kan je opvragen op verschillende manieren. "$_GET['naam']" is er daar 1 van.

Dan ook nog even over PHP script in het algemeen. In PHP moet iedere regel worden afgesloten met een ";" (puntkomma). Het PHP script moet beginnen met "<?PHP" en moet eindigen met "?>".
In PHP is het & teken een ander teken. Om meerdere strings aan elkaar te plakken gebruik je in PHP een "." (punt). Zoals je ziet schrijft het niet alleen de waarde van de variable "$bericht" naar de file, maar ook nog "/r/n". Waar "/r" voor staat weet ik niet precies, maar "/n" zorgt ervoor dat het iedere keer op een nieuwe regel komt te staan in het bestand.
Dan nog 1 algemeen ding over PHP: pagina's waar PHP script in uitgevoerd moet worden, hebben de extensie ".php". Dus als je een pagina met een PHP script erop wil opslaan, dan moet je hem "naam.php" noemen.


Zelf gebruik ik trouwens altijd een ander script, maar het maakt niet uit welke je gebruikt. Deze gebruik ik altijd, die is ook zelf geschreven:
PHP:
<?

$fp=fopen("file.txt","a");
fputs($fp,$_GET['bericht'].'|');
fclose($fp);

?>

In mijn code check ik alleen niet of er iets staat in $_GET['bericht'].


Ik weet het het is een lange post, en misschien niet al te duidelijk, maar lees hem toch even goed door zodat je het zelf ook snapt.

Voor als het nog niet duidelijk is wat er moet gebeuren:
Je moet op de server een bestand aanmaken met de extensie ".php", daar moet je de code in zetten, en dan moet je even laten weten of het is gelukt of niet...



Succes!:thumb:
 
Laatst bewerkt:
Maar op deze site wil ik dus zo'n webserver maken

Maar hoe kan ik daar bestanden opzetten

en hoe kan ik het php bestandje gebruiken in VB

Welke code moet ik dan hebben
 
Wacht even. Stap voor stap.

Een bestandje zetten op een site hangt af van welke webhost je gebruikt/of je zelf host.
Bij die webhost die ik je gegeven heb, is er een control panel. Dat zal er bij de meesten wel zijn. Daarin staat er ergens "File Manager 1". Dat zal er ook bij de meesten wel zijn. Daarop klik je.
Dan moet je waarschijnlijk je wachtwoord invoeren. Als je dat hebt gedaan, kan je het openen. Doe dat. Vervolgens druk je op "New File" en plak je de code die je hebt in het venster. Bovenaan bij "Name"(ofzo) vul je in: *naam*.php (het liefst niet index). Daarna druk je op opslaan (of het diskette tekentje). Druk dan nog eens om nog een bestand aan te maken en noem dat naar het bestand waar de code naar moet wegschrijven:
Bij de code van CaptainBri: chatlog.txt
Bij mijn code: file.txt


Dan als eerste: Het uploaden van een string naar de server:

Bij mijn vorige post had ik het over de PHP variable $_GET['bericht']. Daarbij heb ik verteld dat dat te maken heeft met het vraagteken dat je soms in je adresbalk ziet staan. Daarbij heb ik ook verteld dat daarachter dan dit staat: "naam=waarde". Alleen dan ingevuld natuurlijk.
Als we dat toepassen op de code van CaptainBri, dan komen we tot zoiets:
Code:
http:\\www.*server*.com\*bestandsnaam*.php?bericht=*Wat_we_willen_uploaden*
Alles tussen de * (sterretjes) moet dan wel eerst ingevuld worden. En er zijn bepaalde eisen aan wat je wilt uploaden, maar daar komen we later nog op terug.

Als we dat bij mijn code zouden willen toepassen, zou dat exact hetzelfde zijn. Wat het PHP script dan vervolgens doet, is kijken naar welke waarde er is ingevuld bij bericht. Als je meerdere strings wilt uploaden, dan gebruik je het &-teken. Maar dat komt later nog wel mocht het nodig zijn.

Met Visual Basic kan je dan vervolgens naar dat webadres (met waardes) gaan, en dan worden de waardes aan de tekst-file op de server toegevoegd.


Als je dit begrijpt en alles lukt, komt daarna nog wel de uitleg van het uitlezen van het online bestand.

Succes!:thumb:
 
Laatst bewerkt:
Oke heb hem in die map gezet

Maar ik weet niet de link

Heb een domain maar die doet het helemaal niet

Heb jij skype?
 
Ja ik heb wel skype. Naam: martinjm.
(Vergeet de punt niet..)

maar wat lukt er dan precies niet?

Misschien een screenshot?


Zie hier waar je allemaal moet kijken (bij de webhost die ik had gepost):

attachment.php


geholpen.jpg

Hierbij ben ik er wel vanuit gegaan dat je al wel een account hebt.

En het duurt inderdaad even voordat het opgestart is... Maar verder is het een goede webhost (mijn mening)
 
Laatst bewerkt:
De PHP-code voor het bijhouden van online gebruikers:
PHP:
<?php

$actie=$_REQUEST['actie'];
$naam=$_REQUEST['naam'];

if($actie=="toevoegen")
{

$fp=fopen("online.txt","r");
$inhoud=fread($fp, filesize("online.txt"));
fclose($fp);

$nieuwe_inhoud=str_replace("|".$naam."|\n", "", $inhoud, $count);

if(!$count==0)
{
die("Naam bestaat al.");
}


$fp=fopen("online.txt","a");
fputs($fp, "|".$naam."|\n");
fclose($fp);

}
elseif ($actie=="verwijderen")
{

$fp=fopen("online.txt","r");
$inhoud=fread($fp, filesize("online.txt"));
fclose($fp);


$nieuwe_inhoud=str_replace("|".$naam."|\n", "", $inhoud, $count);

$fp=fopen("online.txt","w");
fputs($fp, $nieuwe_inhoud);
fclose($fp);

}

?>

Let hierbij wel op dat de gebruikersnamen geen "|" (rechtopstaand streepje) mogen bevatten. Dan bestaat er namelijk een kans dat het misgaat...


Voor mensen met een soortgelijk probleem:
Wat we hebben gedaan:

We hebben de php code een klein beetje aangepast zodat het voor dit project beter zou werken:
PHP:
<?php

$fp=fopen("file.txt","a");

$naam=$_REQUEST['naam'];
$bericht=$_REQUEST['bericht'];

fputs($fp, $naam." zegt: ".$bericht."\n");

fclose($fp);

?>

Daarna hebben we gezorgd dat die code vanuit het programma goed wordt aangeroepen:
Code:
Dim cl As New System.Net.WebClient

cl.DownloadString("http://*webserver*/chat.php?naam=" & TxtNaam.tekst & "&bericht=" & TxtBericht.text)

De namen waren een beetje anders, maar dat maakt niet zoveel uit...

Daarna hebben we ervoor gezorgd dat de resultaten ook zichtbaar worden:
Code:
Dim cl As New System.Net.WebClient
RichTextBox1.Text = cl.DownloadString("http://*webserver*/chat.txt")

En dit om te laten zien wie er allemaal online zijn:
Code:
Dim cl As New System.Net.WebClient
RichTextBox2.Text = cl.DownloadString("http://*webserver*/online.txt")

Vervolgens hebben we het ophalen van de resultaten via een aparte thread geregeld.

Voor het aanmelden van nieuwe gebruikers in de chat:
Code:
Dim cl As New System.Net.WebClient
cl.DownloadString("http://*webserver*/online.php?actie=toevoegen&naam=" & TxtNaam.Tekst)

En voor het afmelden van een gebruiker:
Code:
Dim cl As New System.Net.WebClient
cl.DownloadString("http://*webserver*/online.php?actie=verwijderen&naam=" & TxtNaam.Tekst)


En dat is wel ongeveer wat we hebben gedaan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan