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... :/
Annonceindlæg fra HPE
29. september 2008 - 20:31
#1
Sorry skulle have lavet en mere sigende overskrift!
29. september 2008 - 20:34
#2
sock_write(&socket,array,100);
29. september 2008 - 20:35
#3
et kald med et array vil reelt sende adressen på første element
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"); }
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 !
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)
29. september 2008 - 21:03
#7
Du har ret! - Men nu sender den bare ingenting (tomt?)
29. september 2008 - 21:12
#8
hvad laver sock_write helt præcist ?
29. september 2008 - 21:13
#9
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
29. september 2008 - 21:53
#11
Jeg prøver lige at lave en sock_flushnext();
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?
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.
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");
29. september 2008 - 22:55
#15
Tusind tak!!
28. oktober 2008 - 03:11
#16
all set ?
Kurser inden for grundlæggende programmering