программирование сокетов gfortran

Я хочу иметь возможность вызывать сетевые функции в моем приложении на Фортране. Мой босс хочет, чтобы я все делал на Фортране, а не на Си и Фортране. Мы уже сделали версию приложения с использованием компилятора PGI Fortran для Windows. Мы переносим его на Linux, где, вероятно, будем использовать их компилятор. Сейчас я использую gfortran.

Я создал интерфейс для этих сетевых вызовов, и все компилируется и связывается. Код ниже чем-то похож на то, что я делаю, за исключением того, что интерфейсы и константы находятся в модуле.

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

Когда я запускаю программу, функция сокета не возвращается -1. Я действительно не знаю, что происходит. Я не добавляю никаких библиотек в командную строку, поэтому я предполагаю, что она правильно связывается с библиотеками по умолчанию. Я компилирую, используя

gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring
7
задан M. S. B. 6 January 2013 в 04:04
поделиться