Ich möchte in meiner Fortran-Anwendung Netzwerkfunktionen aufrufen können. Mein Chef möchte, dass ich in Fortran alles mache, anstatt C und Fortran zu benutzen. Wir haben bereits eine Version der Anwendung mit PGI Fortran Compiler unter Windows gemacht. Wir verschieben es auf Linux, wo wir wahrscheinlich ihren Compiler verwenden werden. Im Moment benutze ich gfortran.Sockets Programmierung gfortran
Ich habe eine Schnittstelle für diese Netzwerkanrufe erstellt, und alles kompiliert und verknüpft. Der Code unten ist etwas, was ich ähnlich mache, außer dass die Schnittstellen und Konstanten in einem Modul sind.
PROGRAM MAIN
INTEGER,PARAMETER ::AF_INET = 2
INTEGER,PARAMETER ::SOCK_STREAM = 1
INTEGER,PARAMETER ::IPPROTO_TCP = 6
INTERFACE
FUNCTION socket(domain,type,protocol)
INTEGER ::socket,domain,type,protocol
END FUNCTION
END INTERFACE
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)
WRTIE(*,*)"Socket returned: ",sock
END PROGRAM
Wenn ich das Programm ausführen, scheitert die Socket-Funktion -1 zurückgeben. Ich weiß nicht wirklich was los ist. Ich füge keine Bibliotheken in der Befehlszeile hinzu, also nehme ich an, dass es korrekt mit den Standardbibliotheken verknüpft ist. Ich kompiliere mit
gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring
Haben Sie versucht, errno zu überprüfen? –