Avatar billede dj-hupi Nybegynder
29. september 2008 - 20:30 Der er 15 kommentarer og
1 løsning

Hurtig hjælp.

Hejsa.

Jeg er ved at lave noget C programmering og jeg har lidt besvær med et array.

Jeg har en funktion som sender noget over netværket:
sock_write(&socket,text,100);
&socket - er den etableret socket jeg har lavet
text - det text som jeg vil overføre.
100 - er den maksimale byte som overføres.

Mit problem er at få smidt mit array ind i funktionen (Array's fulde længde?)

sock_write(&socket,array[],100); - Virker ikke... :/
Avatar billede dj-hupi Nybegynder
29. september 2008 - 20:31 #1
Sorry skulle have lavet en mere sigende overskrift!
Avatar billede arne_v Ekspert
29. september 2008 - 20:34 #2
sock_write(&socket,array,100);
Avatar billede arne_v Ekspert
29. september 2008 - 20:35 #3
et kald med et array vil reelt sende adressen på første element
Avatar billede dj-hupi Nybegynder
29. september 2008 - 20:43 #4
Jeg prøver lige at sende min kode...

cofunc InitialiserEth0(int counttimer)
{
    sock_init();

    pfledstatus(1, 6);

    while (ifpending(IF_DEFAULT) == IF_COMING_UP) {
          tcp_tick(NULL);
      }

    if(!(host = resolve(REMOTEIP))){
        printf("Could not resolve host\n\n");
    }

    port = atoi(REMOTEPORT);

    pfledstatus(0, 7);
    printf("My IP address is %s\n\n", inet_ntoa(buffer, gethostid()));
    localDATA[0] = inet_ntoa(buffer, gethostid());
    for (iface = 0; iface < IF_MAX; ++iface)
      if (is_valid_iface(iface)) {
          printf("Interface %u is valid.\n", iface);
        if (!ifconfig(iface, IFG_HWA, buffer, IFS_END)){
            printf("  Hardware address is %02x:%02x:%02x:%02x:%02x:%02x\n",
            buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5] );
-------(Her vil jeg gerne sende buffer[0],buffer[1],buffer[2],buffer[3],buffer[4],buffer[5] med Send_data funktionen -------
        }else{
            printf("  No hardware address for this interface.\n");
        }
      }



    waitfor(DelayMs(counttimer));
}

void Send_data(char text[])
{

  if ( !tcp_open(&S_Socket,0,host,port,NULL)) {
  puts("Unable to open TCP session\n\n");
  exit( 3 );
  }
  printf("Readying socket for connection\n\n");
  while (!sock_established(&S_Socket) && sock_bytesready(&S_Socket)== -1){
    tcp_tick(NULL);
  }
  printf("Socket connection made\n\n");

  sock_write(&S_Socket,text,100);

  printf("Socket connection closed\n\n");
}
Avatar billede arne_v Ekspert
29. september 2008 - 20:50 #5
Send_data(buffer);

men men men

Send_data mangler et argument - tilføj det så vil alt være nemmere !
Avatar billede arne_v Ekspert
29. september 2008 - 20:51 #6
void Send_data(char text[], int len)
{
...
sock_write(&S_Socket,text,len);

og

Send_data(buffer, 6);

vil virke meget bedre (den oprindelige kode vil nok crashe fordi buffer ikke er 100 lang)
Avatar billede dj-hupi Nybegynder
29. september 2008 - 21:03 #7
Du har ret! - Men nu sender den bare ingenting (tomt?)
Avatar billede arne_v Ekspert
29. september 2008 - 21:12 #8
hvad laver sock_write helt præcist ?
Avatar billede dj-hupi Nybegynder
29. september 2008 - 21:13 #9
Avatar billede arne_v Ekspert
29. september 2008 - 21:48 #10
jeg kan se 2 muligheder:
1) data bliver sendt og fejlen ligger et andet sted
2) du mangler at kalde sock_flush
Avatar billede dj-hupi Nybegynder
29. september 2008 - 21:53 #11
Jeg prøver lige at lave en sock_flushnext();
Avatar billede dj-hupi Nybegynder
29. september 2008 - 22:19 #12
arne, må jeg spørger dig om hvordan man så tilføjer noget tekst i et array i C?

Hvis jeg tideligere har lavet: Smessages[0] = "[PROBEDATA][RCM3700-001]";
og har lyst til at tilføje noget efter det tekst?
Avatar billede arne_v Ekspert
29. september 2008 - 22:36 #13
Hvis du har et array med 10 pladser kan du ikke bare lige smide 20 elementer ind.

Hvis der er "ledig" plads kan du appende til det eksisterende array.

Ellers må du lave et array af den rigtige størrelse og først kopiere det gamle over
og så det nye.
Avatar billede arne_v Ekspert
29. september 2008 - 22:37 #14
char s[] = "ABC";

// duer ikke:
strcat(s, "DEF");

// duer:
char *s2 = new char[7];
strcpy(s2, s);
strcat(s2, "DEF");
Avatar billede dj-hupi Nybegynder
29. september 2008 - 22:55 #15
Tusind tak!!
Avatar billede arne_v Ekspert
28. oktober 2008 - 03:11 #16
all set ?
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