Die Speichergröße der Variablen sockaddr_in ist nicht bekannt

8

Ich habe ein Stück Code, das in einer Umgebung vor langer Zeit verwendet wurde. Ich bin mir ziemlich sicher, dass es ein FreeBSD-Rechner war, also habe ich FreeBSD 8.3 bekommen und ich versuche, diese Datei zu erstellen, aber es funktioniert nicht.

Wenn ich versuche es zu kompilieren, klagt es mit:

%Vor%

Ich habe mich umgesehen und sehe, dass alle in der Datei sys / socket.h angegeben sind. Dies ist meine eigentliche Datei:

%Vor%

Ich habe das Gefühl, dass mein Code die sys / socket.h-Datei irgendwie nicht "liest", so dass er nichts über socket_stru und IPPROTO_TCP weiß, aber ich bin nur wirklich verloren.

Irgendwelche Ideen?

    
coconut 22.04.2013, 18:53
quelle

5 Antworten

6

Ich schneide und füge deinen Code in eine Datei ein (entferne nur den #include f.h und verschließe den Funktionsaufruf). Er kompiliert einfach gut auf Linux .

Ich vermute, dass es Unterschiede zwischen den Headerdateien auf BSD geben kann. Für die Socket-Programmierung schließe ich normalerweise ALLE diese Header-Dateien ein. Und ich weiß, dass mein Socket-Code auch auf BSD kompiliert wird. Ich vermute, dass eine dieser Headerdateien die Definition für sockaddr_in enthält. Ich erinnere mich, als ich portiert von Socket-Code zu BSD, musste ich einige von diesen explizit hinzufügen.

%Vor%

Hoffe das hilft

    
selbie 22.04.2013, 19:04
quelle
6

Keine der anderen Antworten funktionierte für mich. Nachdem ich in die Datei sys/socket.h geschaut habe, habe ich nicht einmal eine Definition für struct sockaddr_in gesehen.

Was für mich funktionierte, war #include einer der folgenden Dateien, wenn Sie den entsprechenden struct sockaddr_* -Typ verwenden:

  • wenn Sie struct sockaddr_in , #include <netinet/in.h> verwenden
  • wenn Sie struct sockaddr_un , #include <sys/un.h> verwenden
  • wenn Sie struct sockaddr_ns , #include <netns/ns.h> verwenden
  • wenn Sie struct sockaddr_ndd , #include <sys/ndd_var.h> verwenden

Weitere Informationen zu den Header-Dateien für die Socket-Programmierung finden Sie hier .

    
aanrv 19.02.2016 20:58
quelle
4

Ich hatte das gleiche Problem, aber das Folgende hat das Problem für mich behoben

%Vor%     
slmyers 17.03.2015 23:38
quelle
4

Füge einfach #include <resolv.h> zu deiner Quelle hinzu und du kannst loslegen.

    
jetman 10.03.2016 18:46
quelle
2

Nach freebsd Entwicklerhandbuch brauchen Sie

%Vor%     
pmg 19.02.2016 21:08
quelle

Tags und Links