Avatar billede c0ld1mp Nybegynder
09. august 2003 - 14:13 Der er 18 kommentarer og
1 løsning

få et program til at snakke med en anden konsol

jeg ved ikke hvordan man for et prg til at snakke med en anden konsol så jeg giver 200 point til den der kan hjælpe mig.
Avatar billede repsak Nybegynder
09. august 2003 - 17:36 #1
hvis du mener at person A sidder Computer Ca skal kunne forbindes til B's computer Cb, så skal du have fat i noget socketprogrammering. Hvad er det du vil lave?
Avatar billede bertelbrander Novice
09. august 2003 - 17:43 #2
Hvad er det for en konsol (linux/windows/unix/mac)?
Er de to konsoller på den samme maskine?
Hvilken C/C++ compiler ønsker du at bruge?
Skal det bruges til noget bestemt?
Avatar billede narrr Nybegynder
09. august 2003 - 18:42 #3
Er der en tankelæser til stede?
Avatar billede bertelbrander Novice
10. august 2003 - 01:28 #4
Jeg lavede følgende lille demo program der viser én måde at kommunikere mellem to windows konsol applikationer. De to applikationer skal køre på samme PC.
Man starter først en client app (ved at give programmet et c som argument, eller ved at svare c når det spørger), og derefter en server (s som argument eller som svar). De vil så sende lidt frem og tilbage og afslutte (hvis alt går vel).
Det kan kompileres med BorlandC, Microsoft Visual C++, og GCC (cygwin, og sansynligvis også mingw).

<code>
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

#define CLIENT_TITLE "ConsoleAppClient"
#define SERVER_TITLE "ConsoleAppServer"
BOOL IsClient;
DWORD OtherThreadId;

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
  char text[1024];

  GetWindowText(hwnd, text, sizeof(text));
  if(strstr(text, CLIENT_TITLE))
  {
    char *s = &text[strlen(CLIENT_TITLE)];
    OtherThreadId = strtol(s, NULL, 10);
  }

  return lParam == lParam; /* Warning Elemination */
}

int CreateString(const char *str)
{
  return (int )GlobalAddAtom(str);
}

int main(int argc, char *args[])
{
  if(argc != 2)
  {
    char line[10];
    do
    {
      printf("Do you want to be client or server[cs]? ");
      fflush(stdout);
      fgets(line, sizeof(line), stdin);
      tolower(line[0]);
    }
    while(line[0] != 'c' && line[0] != 's');
    IsClient = line[0] == 'c' ? TRUE : FALSE;
  }
  else
    IsClient = tolower(args[1][0]) == 'c' ? TRUE : FALSE;

  if(IsClient)
  {
    char Title[1024];
    sprintf(Title, "%s %ld", CLIENT_TITLE, GetCurrentThreadId());
    SetConsoleTitle(Title);
  }
  else
    SetConsoleTitle(SERVER_TITLE);

  if(IsClient)
  {
    MSG msg;
    char message[1024];
    GetMessage(&msg, NULL, 0, 0xFFFF);
    GlobalGetAtomName((ATOM )msg.lParam, message, sizeof(message));
    GlobalDeleteAtom((ATOM )msg.lParam);
    printf("Msg: %d %d %s\n", msg.message, msg.wParam, message);
    OtherThreadId = msg.wParam;
    PostThreadMessage(OtherThreadId, 1111, 2222, CreateString("Client Sending Responce"));
  }
  else
  {
    EnumWindows(EnumWindowsProc, 0);

    if(OtherThreadId)
    {
      MSG msg;
      char message[1024];
      PostThreadMessage(OtherThreadId, 1001, GetCurrentThreadId(), CreateString("Sending Init Message From Server"));
      GetMessage(&msg, NULL, 0, 0xFFFF);
      GlobalGetAtomName((ATOM )msg.lParam, message, sizeof(message));
      GlobalDeleteAtom((ATOM )msg.lParam);
      printf("Msg: %d %d %s\n", msg.message, msg.wParam, message);
    }
    else
      printf("Failed to find my peer\nYou must start the client before the server\n");
  }

  return 0;
}
</code>
Avatar billede c0ld1mp Nybegynder
10. august 2003 - 14:45 #5
ja jeg forklarede hvist d ikke nok...
jeg ville have en konsol som skal snakke med en anden konsol på samme computer og det skal være i C++
Avatar billede bertelbrander Novice
10. august 2003 - 20:28 #6
Hvad skal de to konsoler snakke med hinanden om?
Hvad skal de to konsoler lave, udover at snakke med hinanden?
Har du prøvet mit lille demo program, kan det bruges som en start?
(Jeg er ikke synsk)
Avatar billede c0ld1mp Nybegynder
10. august 2003 - 20:31 #7
oki kort sagt jeg vil lave et program der går ind og snakker med hl-server konsolen som gir nogle kommandoer hvis d og d sker eller folk skriver
Avatar billede c0ld1mp Nybegynder
10. august 2003 - 20:34 #8
og forresten hvis du gider ligge nogle komentare ved der forklare lidt om hvad linierne gør..da jeg ikke har serlig meget/næsten ingen erfaring med c++ og mindre med c
Avatar billede bertelbrander Novice
10. august 2003 - 20:46 #9
Hvad er en hl-konsol?
Er det et program som nogen har lavet som du så vil snakke med?
Avatar billede bertelbrander Novice
10. august 2003 - 20:50 #10
Inden jeg giver mig til at beskrive hvad koden gør, vil jeg gerne vide om det kan bruges. Hvis det kan vil jeg anbefale dig at kikke i din kompilers dokumentation for at finde ud af hvad de funktioner der bruges gør.
Har du en C/C++ kompiler, har du prøvet at kompile og køre programmet?
Avatar billede c0ld1mp Nybegynder
10. august 2003 - 21:53 #11
hl = half life der er et spil, og jeg vil have en slags bot kan man kalde det der hjælper med at styre serveren og ja jeg tror d kan bruges til noget
Avatar billede narrr Nybegynder
10. august 2003 - 23:01 #12
c0ld, du er ved at rode dig ud i noget som du overhovedet ikke har styr på. Køb en bog om sproget og lær det grundlæggende før du roder dig ud i ting du ikke forstår / bare vil skrive af efter andre. Alternativt kan du oprette spørgsmålet på sharksforum eller lign.
Avatar billede bertelbrander Novice
10. august 2003 - 23:31 #13
Jeg tror jeg må give narrr ret. At lave det du er ude efter er ikke noget man bare lige laver, og jeg vil ikke lave det for dig.
Hvis du ønsker at lære at programere synes jeg at du skal købe en bog og starte med noget simplere.
Hvis du fortsat vil have programmet lavet kunne du starte med at finde ud af om der er nogen der har lavet noget lignene som du kan låne, ellers er der en kategori her på eksperten hvor man kan bede om at få lavet programmer, f.ex http://www.eksperten.dk/kat/300/ jeg tror dog ikke at der er nogen vil lave det for points alene.
Avatar billede c0ld1mp Nybegynder
11. august 2003 - 09:19 #14
har 2 bøger som jeg er ved at gå igennem den ene er får at lære c/c++ den anden kræver 2 års erfaring men jeg gør det også for at lære sproget jeg synes bare d r kedeligt når jeg laver noget jeg ikke kan bruge til en skid jeg kræver d bare som en start til at jeg kan komme igang med programmet
Avatar billede bertelbrander Novice
11. august 2003 - 20:20 #15
1: Jeg er sikker på at der kan laves mange programmer der "kan bruges til en skid" og som er lettere at lave end det du ønskede.
2: Jeg har aldrig mødt en C/C++ bog der kræver 2 års erfaring.
3: Der findes ingen ord i danmark der hedder d eller r, derimod har man opfundet , og . Du vil sansynligvis finde mere imødekommenhed hvis du forøger at skrive på dansk.
4: Der er ikke lykkedes mig ikke at afkode hvad det er du "kræver" i "sætningen" ovenover. Normalt udtrykker et indlæg her på experten et ønske.
Avatar billede narrr Nybegynder
11. august 2003 - 20:28 #16
Ja, alle de SMS'er ødelægger det danske sprog(det gør counter-strike forresten også).
Avatar billede c0ld1mp Nybegynder
13. august 2003 - 20:49 #17
d r en eller anden amerikaner der har skrever bogen der er ikke exempler som man ser i de fleste bøger, den forklare om lagerstyring komprimering og sådan noget. og eg jeg skriver anderledes jeg kunne gøre d være men ville dog være lidt flink så i kunne læse noget a d
Avatar billede bertelbrander Novice
13. august 2003 - 23:42 #18
Du må gerne skrive "være" for min skyld, så er jeg fri for at skulle overveje om jege gider svare.
Avatar billede zyxtem Nybegynder
18. august 2003 - 13:19 #19
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
Kurser inden for grundlæggende programmering

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