Hallo Leute,
ich bin wieder. Ich habe folgende Code geschrieben. Es läuft alles gut
wenn return_code== RETURN_OKAY.
Die Daten wird immer gescheckt. Wenn eine fertig ist dann wird 2.Daten
kommen und wieder überprüfen usw.
Es läuft aber nicht mehr Wenn return_code != RETURN_OKAY dann hängt mein
Programm. Ich weiß gerade nicht wo das Problem liegt.
Es wäre nett wenn ihr mir das zeigen könnte.
Carolin
Abgesehen davon, daß der Code nicht gerade übersichtlich formatiert ist
(gut, es gibt schlimmeres) und die gerufenen Funktionen fehlen....
Kann es sein, daß dein Client erst wieder Daten schickt, wenn er eine
Bestätigung bekommen hat?
Bernhard M. wrote:
> Abgesehen davon, daß der Code nicht gerade übersichtlich formatiert ist> (gut, es gibt schlimmeres) und die gerufenen Funktionen fehlen....
In der gerufen Funktion(check1 und check2) werden die Daten nur
verglichen und return_code wird gesetzt(also nicht mehr RETURN_OKAY)
wenn nicht gleich
die andere Funktionen wie create_socket sind ähnlich(nur die Befehle
unterschiedlich) wie z.B
1
intcreate_socket(intdomain,inttype,intprotokoll){
2
intsock;
3
sock=socket(domain,type,protokoll);
4
if(sock<0){
5
perror("socket()");
6
exit(10);
7
}
8
returnsock;
9
10
}
> Kann es sein, daß dein Client erst wieder Daten schickt, wenn er eine> Bestätigung bekommen hat?>
wird nie
> gerufen, wenn return_code != RETURN_OKAY....
Der Client wird die Daten immer schicken auch wenn der keine Bestätigung
bekommt.
Nur die bestimmte Daten soll wieder zu Client geschickt werden
Wenn ich ein Test unter cpData = Check1(..) wie folgt mache
1
#define MAX 1024
2
#define SERVER_PORT 5000
3
intmain(){
4
intsockfd;
5
intbyte;
6
uint8puffer[MAX];
7
uint8*cpData;
8
sockfd=create_socket(AF_INET,SOCK_DGRAM,0);
9
printf("create a socket\n");
10
bind_socket(&sockfd,"168.100.0.1",SERVER_PORT);
11
while(1){
12
memset(puffer,0,MAX);
13
while((byte=UDP_recv(&sockfd,puffer,MAX))>0){
14
puffer[byte]='\0';
15
cpData=puffer;
16
cpData=check1(cpData);
17
//Wenn return_code in der Funktion check1 gesetzt wird
18
19
printf("hier noch??");
20
21
//diese "hier noch??" wird noch ausgegeben
22
23
if(return_code!=RETURN_OKAY)//diese Zeile wird nicht gearbeitet