WIZNet 5300 TCP Verbindung zu Win Host

Gast #1698917
Lesenswert?
• ▲
▼
Hallo,

ich habe ein Problem mit der TCP Verbindung des WIZNet zu einem Windows 
Host. Der Host soll ein UDP Broadcast ins gesamte Netz senden und der 
Wiznet sich daraufhin melden. Das klappt auch soweit, allerdings nur 1/3 
der Versuche. Bei den anderen antwortet der Wiznet zwar, sendet auch ein 
SYN an den Host, dieser sendet aber kein ACK zurück. Hier ist der 
grundsätzliche Ablauf des Host Programms:
1
startWinsock();
2
broadsock=socket(AF_INET,SOCK_DGRAM,17);
3
errcheck = setsockopt(broadsock, SOL_SOCKET, SO_BROADCAST, (char *)&broadcast, sizeof(broadcast));
4

5
newdeviceSocket=socket(AF_INET,SOCK_STREAM,0);
6
errcheck=bind(newdeviceSocket,(SOCKADDR*)&inaddr,sizeof(SOCKADDR_IN));
7
errcheck=listen(newdeviceSocket,10);
8

9
errcheck=sendto(broadsock,broadbuf,16,0,(SOCKADDR*)&broadaddr,sizeof(SOCKADDR_IN));
10

11
FD_ZERO(&selectset); 
12
FD_SET(newdeviceSocket,&selectset); 
13
waittime.tv_sec = 1; 
14
waittime.tv_usec = 500000;
15
errcheck=select(0,&selectset,NULL,NULL,&waittime);
16

17
closesocket(broadsock);
18

19
connewdeviceSocket=accept(newdeviceSocket,(SOCKADDR*)&newdeviceaddr,&newdevaddrsize); 
20
errcheck=recv(connewdeviceSocket,recbuf,16,0); 
21
errcheck=send(connewdeviceSocket,respbuf,8,0);
22
closesocket(connewdeviceSocket);   
23
closesocket(newdeviceSocket);  
24
WSACleanup();

Achtung: Der Code ist der Übersichtlichkeit halber nicht komplett. Ich 
habe nur die wichtigsten Befehle rausgeschrieben.

Dabei wird erst der Broadcast vorbereitet und der Port für die 
eingehende Nachricht auf lauschen gesetzt. Dann wird der Broadcast 
gesendet und mit Select 1,5s lang geprüft ob was zurückommt. Genau hier 
passiert es dann, das selct einen Timeout hat obwohl im Wireshark ein 
Syn Paket zu sehen ist (siehe Anhang).

Zeit raufsetzen oder Fireall ausschalten bringt nichts. Ist der 
prinzipielle Ablauf des Host Programms so überhaupt in Ordnung?

Grüße
Nickodemus
Angehängte Dateien:

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.