Quiero poder llamar funciones de red en mi aplicación Fortran. Mi jefe quiere que haga todo en Fortran en lugar de usar C y Fortran. Ya hemos hecho una versión de la aplicación usando el compilador Fortran de PGI en Windows. Lo estamos trasladando a Linux, donde probablemente utilicemos su compilador. En este momento, estoy usando gfortran.sockets que programan gfortran
He creado una interfaz para estas llamadas de red, y todo compila y enlaces. El siguiente código es similar a lo que estoy haciendo, excepto que las interfaces y las constantes están en un módulo.
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
Cuando ejecuto el programa, la función de socket falla al devolver -1. Realmente no sé lo que está pasando. No agrego ninguna biblioteca en la línea de comandos, así que supongo que está enlazando con las bibliotecas predeterminadas correctamente. Compilo usando
gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring
¿Has probado para comprobar errno? –