PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : befehle send?


pau
09.12.2005, 22:51
hi
wie kann ich befehle send uebers netzwerk
und zwar will ich das wort action send und dann soll der pc am anderen ende eien behfel ausfüren mit eine switch anweißung jedoch kann ich meinen char nicht einfach in einen integer umwandeln da ich char einen reservierten platz vom 100 gegeben habe und kein pointer auf ich gesetzt habe(denn trit immer ein fehler auf)
wie wuerdet ihr dieses problem lesen.


ps. sorry fuer meinen ausdruck


Felix Kaiser
10.12.2005, 09:28
Kannst du vielleicht etwas Code posten was du bisher so hast, damit man dich besser verstehen kann?

Baegsch
12.12.2005, 11:01
wie wuerdet ihr dieses problem lesen.Das ist ja die Ironie pur :D

pau
12.12.2005, 12:53
@Baegsch
sorry ich meine lösen

char buf[256];
int int_buf;

recv(s,buf,256,0);
int_buf=(int)buf;

switch(int_buf)
{
case 123: ShellExecute(NULL,NULL,NULL,"c:\",NULL,SW_SHOWNORMAL);
}


also und mein problem liegt darin das er mir den char nicht richtig umwandelt da ich ihn schon auf 256 zeichen festgelegt habe.
jedoch kann ich auch keinen pointer benutzten da sonst es zum programm absturz kommt

mnemonic
12.12.2005, 13:26
char buf[256];
int int_buf;

recv(s,buf,256,0);
int_buf=(int)buf;

switch(int_buf)
{
case 123: ShellExecute(NULL,NULL,NULL,"c:\\",NULL,SW_SHOWNORMAL);
}
Ist mir spontan aufgefallen...

butterkeks
12.12.2005, 20:30
willst du den empfangenen String oder nur den Wert des ersten empfangenen Zeichens vergleichen?

pau
13.12.2005, 13:52
ich will eigendlich nur denn empfangenden string vergleichen mit switch(if anweisung ist zu lang um es zu schrweiben) da es mehrere befehlen geben soll

poldy
13.12.2005, 14:39
ich will eigendlich nur denn empfangenden string vergleichen mit switch(if anweisung ist zu lang um es zu schrweiben) da es mehrere befehlen geben soll
ich würde an deiner stelle mit strcmp in einer if anweisung die strings miteinander vergleichen und dann dem int einen wert zuweisen.
z.B. if (strcmp(buf,"123") {int_buf =123;} u.s.w. für alle befehle.

Den string selber wirst du nicht in einen int so ohne weiteres umwandeln können. (Wenn doch dann musste das hier mal posten, dann wird dir jeder hier ganz schön dankbar sein :eek: ).
Der buffer mess übrigens 0 terminiert sein. Hoffe das macht dein client, weil im Server steht davon nichts.

oder der Client sendet gleich binär. Wäre auch ne Möglichkeit.

butterkeks
13.12.2005, 20:05
einen string kann man mit der atoi() Funktion in einen int umwandeln (dann geht auch das mit dem case).

du mussst den empfangenen String allerdings auch null-terminieren, damit es geht; Beispiel:

char bfr[512];
int n, num;

n = recv(sock, bfr, 511, 0);
bfr[n] = '\0';

num = atoi(bfr);

switch(num) {
/* ... */
}