Desidero poter chiamare le funzioni di rete nella mia applicazione Fortran. Il mio capo vuole che faccia tutto in Fortran invece di usare C e Fortran. Abbiamo già realizzato una versione dell'applicazione utilizzando il compilatore Fortran di PGI su Windows. Lo stiamo spostando su Linux dove probabilmente useremo il loro compilatore. In questo momento sto usando gfortran.programmazione socket gfortran
Ho creato un'interfaccia per queste chiamate di rete, e tutto compila e collega. Il codice seguente è qualcosa di simile a quello che sto facendo eccetto che le interfacce e le costanti sono in un modulo.
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
Quando si esegue il programma, la funzione socket non riesce a restituire -1. Non so davvero cosa sta succedendo. Non aggiungo alcuna libreria sulla riga di comando quindi suppongo che stia collegando correttamente le librerie predefinite. Compilare utilizzando
gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring
Hai provato di controllare errno? –