小编hw1*_*w12的帖子

套接字编程gfortran

我希望能够在我的Fortran应用程序中调用网络功能.我的老板要我在Fortran中做所有事情,而不是使用C和Fortran.我们已经在Windows上使用PGI的Fortran编译器完成了该应用程序的一个版本.我们正在将它转移到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
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,套接字函数返回-1失败.我真的不知道发生了什么.我没有在命令行上添加任何库,所以我猜它正在正确链接默认库.我编译使用

gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring
Run Code Online (Sandbox Code Playgroud)

sockets linux networking fortran fortran-iso-c-binding

7
推荐指数
1
解决办法
3103
查看次数