Avatar billede net-city Nybegynder
26. marts 2005 - 19:54 Der er 40 kommentarer og
1 løsning

Sende kommandoer til en java server i php cli

Hej jeg er ny i php-cli verdnen og ville spørgere hvordan man fx, connecter til en server også hvis en bruger derinde siger hej, skal den såkaldte "bot" svare @auto: Det mig.

Det er til www.towerchat.com jeg vil bygge en bot til ( det skal sige jeg har fået lov)

vi siger der er 2 brugere inde på  towerchat, så siger den ene "bot" så siger den anden bruger @auto: bot, den som siger @auto: bot, skal være den som jeg har lavet.
Avatar billede arne_v Ekspert
26. marts 2005 - 20:00 #1
socket kommunikation ?
Avatar billede net-city Nybegynder
26. marts 2005 - 20:01 #2
Hvordan?
Avatar billede arne_v Ekspert
26. marts 2005 - 20:05 #3
Hvis ja så må det vel være fsockopen du skal starte med

http://us3.php.net/manual/en/function.fsockopen.php
Avatar billede net-city Nybegynder
26. marts 2005 - 20:06 #4
Har prøvet mig frem, se her.


<?php
set_time_limit(0);

$server_addr = "chattower.dk";  // et eks.
$server_port = "80";  // et eks.

$remotehost = "chattower.com"; // et eks.
$localhost = "127.0.0.1";
$realname = "TheBot";
$nick = "3";


$socket = fsockopen($server_addr, $server_port, $errno, $errstr); 
$Header = "test";

fputs($socket, "Tjekker?");

if ($socket < 0) { echo "failed... $errno: $errstr"; return; }
else {
echo "Connected.";
}

socket_set_blocking($socket, false);

while($socket) {
  $out = fgets($socket, 1024);
    $out = rtrim($out);
    print "$out";
    if (strlen($out) > 1) {
        if (preg_match("test", $out, $matches)) {
            fputs($socket, "Det virker");
            print "Denne besked kommer hvis en skrev test.\r\n";
        }
    }
    usleep(2500);
}

?>
Avatar billede net-city Nybegynder
26. marts 2005 - 20:06 #5
Men den vil ikke sige "det virker" hvis en skriver test.
Avatar billede net-city Nybegynder
26. marts 2005 - 20:07 #6
Husk det jeg prøver og sende til clienten er lavet i java, altså den chat (www.towerchat.com)
Avatar billede arne_v Ekspert
26. marts 2005 - 20:17 #7
Java sockets er ligesom alle andre sockets.
Avatar billede arne_v Ekspert
26. marts 2005 - 20:18 #8
Men prøv og udskriv hvad du modtager
Avatar billede net-city Nybegynder
26. marts 2005 - 20:21 #9
får:
Conneted.abhaml
Avatar billede net-city Nybegynder
26. marts 2005 - 20:28 #10
abhaml er det jeg får ud fra serveren
Avatar billede arne_v Ekspert
26. marts 2005 - 20:30 #11
Er der en protokol mellem client og server ?
Avatar billede net-city Nybegynder
26. marts 2005 - 20:33 #12
ved ikke? - Tror jeg da nok
Avatar billede net-city Nybegynder
26. marts 2005 - 20:33 #13
somsagt er jeg ny inden for det område..
Avatar billede net-city Nybegynder
26. marts 2005 - 23:25 #14
Du kan da ikke bare smutte når vi er igang med en samtale?
Avatar billede arne_v Ekspert
27. marts 2005 - 00:03 #15
Det hænder at jeg har andet at lave en hænge på E ...

:-)
Avatar billede arne_v Ekspert
27. marts 2005 - 00:03 #16
Har du en beskrivelse af den protokol ?
Avatar billede net-city Nybegynder
27. marts 2005 - 01:21 #17
Undskyld, men ved ikke hvad en protokol af? - Ikke bliv sur
Avatar billede net-city Nybegynder
27. marts 2005 - 01:24 #18
af = er
Avatar billede arne_v Ekspert
27. marts 2005 - 12:09 #19
En protokol beskriver hvordan data skal sendes mellem vlient og server.

Den kan f.eks. definere at det skal ske som:

client->server : SEND bruger "tekst som skal sendes"

server->client : MESSAGE "tekst som modtages"
Avatar billede net-city Nybegynder
27. marts 2005 - 13:46 #20
når man skal sende en besked ser det sådan her ud ID,tekst
ID = brugerens id på chatten
tekst = teksten som skal sendes

det samme med modtagelse.
Avatar billede arne_v Ekspert
27. marts 2005 - 17:11 #21
Og du skal ikke skrive noget for at logge ind ?
Avatar billede jesperkm Nybegynder
27. marts 2005 - 17:33 #22
Nej, er jo logget ind på chatten i forevejen.
Avatar billede net-city Nybegynder
27. marts 2005 - 17:38 #23
jesperkm - plz lad være med at tage mine koder, lav dit eget!
Avatar billede arne_v Ekspert
27. marts 2005 - 17:46 #24
Øh

Hvordan skal chatserveren vide at din nuværende chat session og dit PHP script
er samme bruger ?
Avatar billede net-city Nybegynder
27. marts 2005 - 17:47 #25
Du har ret :D
Hvordan fortæller man brugeren den skal logge ind?
Avatar billede arne_v Ekspert
27. marts 2005 - 18:48 #26
Der må være en protokol for hvad client skal sende til serveren for at logge ind.
Avatar billede net-city Nybegynder
27. marts 2005 - 19:14 #27
Ja, men hvordan fortæller man serveren den skal finde informationer fra nettop den bruger jeg er logget ind med?
noget med USERNAME: mitusername, PASSOWORD: kodeordet
fra chatten, men hvordan logger man ind?
Avatar billede net-city Nybegynder
27. marts 2005 - 20:19 #28
kan du hjælpe med det?
Avatar billede arne_v Ekspert
27. marts 2005 - 20:21 #29
Hvis du er sikker på at det er formatet så må det være:

fputs($socket, "USERNAME: " . $mitusername);
fputs($socket, "PASSWORD: " . $kodeordet);
Avatar billede alister_crowley Nybegynder
27. marts 2005 - 20:23 #30
Det er vel det samme som det lykkedes os at bruge 18 poster på i et andet spørgsmål.

Hvordan er dit INPUT/OUTPUT eller protokol som arne_v spørger om :)

Det nemmeste var nok at spørge programmørerene af towerchat, hvis det er muligt.
Avatar billede alister_crowley Nybegynder
27. marts 2005 - 20:26 #31
Du har forresten glemt at lukke det net-city

http://www.eksperten.dk/spm/601557
Avatar billede net-city Nybegynder
27. marts 2005 - 21:08 #32
hej
så virker den igen, og har nu lavet det som arne_v sagde, nu udskriver den:
Connected.alfe

min kode:

<?php
set_time_limit(0);

$server_addr = "server";  // et eks.
$server_port = "202";  // et eks.

$remotehost = "server"; // et eks.
$localhost = "127.0.0.1";
$realname = "TheBot";
$nick = "3";


$socket = fsockopen($server_addr, $server_port, $errno, $errstr); 
$Header = "test";

fputs($socket, "Tjekker?");

if ($socket < 0) { echo "failed... $errno: $errstr"; return; }
else {
echo "Connected.";
}
$mitusername = "Bot";
$kodeordet = "bot1234";

fputs($socket, "USERNAME: " . $mitusername);
fputs($socket, "PASSWORD: " . $kodeordet);


socket_set_blocking($socket, false);

while($socket) {
  $out = fgets($socket, 1024);
    $out = rtrim($out);
    print "$out";
    if (strlen($out) > 1) {
        if (preg_match("/test/", $out, $matches)) {
            fputs($socket, "Det virker");
            print "Denne besked kommer hvis en skrev test.\r\n";
        }
    }
    usleep(2500);
}

?>
Avatar billede arne_v Ekspert
27. marts 2005 - 21:42 #33
Det er håbløst at gætte sig frem til hvad du skal skrive.

Bed dem der driver den char serveren om en spec på protokollen.
Avatar billede net-city Nybegynder
27. marts 2005 - 22:47 #34
undskyld undskyld arne.. ikke vær' sur!

men ikke blev sur men hvad er en protokol?
Avatar billede arne_v Ekspert
27. marts 2005 - 23:27 #35
Det beskrev jeg 12:09:07

Men dem der har protokollen ved også hvad det er

Og jeg er ikke sur - vi kommer bare ikke videre uden noget dokumentation
Avatar billede net-city Nybegynder
28. marts 2005 - 00:48 #36
Har jeg da beskrevet, læs 13:46:17
Avatar billede arne_v Ekspert
28. marts 2005 - 10:24 #37
Hm - jeg mangler f.eks. en beskrivelse af hvad "abhaml" og "alfe" betyder !

Og der må være flere kommandoer og svar.
Avatar billede net-city Nybegynder
28. marts 2005 - 16:21 #38
1. Den giver ikke flere kommandoer.
2. alfe og abhaml er det man får ud fra serveren af.

- Kan man ikke bare lave en echo eller sådan noget fx. en fwrite eller sådan noget som skriver nogle JAVA kommandoer til serveren, fx.
C,pId,mood_3 eller sådan noget.
for så vil den skifte humør.
Avatar billede alister_crowley Nybegynder
28. marts 2005 - 19:35 #39
net-city, vi snakker ikke om chat kommandoerne, du bruger virtuelt.

Det der mangler af info, er de kommandoer SERVEREN bruger, dvs. den bagliggende kode.
Fordi at jeg skriver "hej" i mIRC (IRC client) , så ser jeg jo ikke den skriver
"PRIVMSG channel : hej" til serveren.

Den kommando du så skulle sende med PHP, var netop "PRIVMSG channel : hej" og ikke bare "hej" som du stadigvæk tror. Dette er umuligt uden at have en RFC til den pågælgende protokol.

Sådan en kunne du sikkert få hvis du gad spørge towerchat, og du har jo fået lov.

Her er 2 eksmpler på RFC'er

FTP: http://www.w3.org/Protocols/rfc959/
IRC: http://www.alleged.com/irc/rfc/
Avatar billede net-city Nybegynder
30. marts 2005 - 14:20 #40
Læs 13:46:17
Avatar billede net-city Nybegynder
21. juni 2005 - 20:29 #41
h
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester