安装Fortran编译器
使用gfortran(推荐)或Intel Fortran Compiler:
sudo yum install gcc-gfortran # 安装GFortran (若需并行计算,可额外安装OpenMPI:sudo yum install mpich)
安装网络库
CentOS基础库通常已包含libsocket、libnetinet,无需额外安装。
1. TCP服务器示例(server.f90)
program tcp_server use, intrinsic :: iso_c_binding implicit none integer(c_int), parameter :: port = 8080 integer(c_int) :: server_fd, new_socket type(sockaddr_in) :: address integer(c_int) :: addrlen = sizeof(address) character(c_char), dimension(1024) :: buffer ! 创建套接字 server_fd = socket(AF_INET, SOCK_STREAM, 0) if (server_fd < 0) stop "Socket creation failed" ! 绑定地址与端口 address%sin_family = AF_INET address%sin_addr%s_addr = inet_addr("127.0.0.1") address%sin_port = htons(port) if (bind(server_fd, address, sizeof(address)) < 0) stop "Bind failed" ! 监听连接 if (listen(server_fd, 5) < 0) stop "Listen failed" ! 接受连接并通信 new_socket = accept(server_fd, address, addrlen) if (new_socket < 0) stop "Accept failed" buffer = "Hello from server!" call send(new_socket, buffer, len(buffer), 0) print *, "Message sent" close(new_socket) close(server_fd) end program tcp_server 2. TCP客户端示例(client.f90)
program tcp_client use, intrinsic :: iso_c_binding implicit none integer(c_int) :: sock type(sockaddr_in) :: serv_addr character(c_char), dimension(1024) :: buffer ! 创建套接字 sock = socket(AF_INET, SOCK_STREAM, 0) if (sock < 0) stop "Socket creation error" ! 连接服务器 serv_addr%sin_family = AF_INET serv_addr%sin_port = htons(8080) if (inet_pton(AF_INET, "127.0.0.1", serv_addr%sin_addr) <= 0) stop "Invalid address" if (connect(sock, serv_addr, sizeof(serv_addr)) < 0) stop "Connection failed" ! 发送并接收消息 call send(sock, "Hello from client", len("Hello from client"), 0) buffer = " " call recv(sock, buffer, 1024, 0) print *, "Received: ", buffer close(sock) end program tcp_client 编译程序
使用gfortran编译,链接标准库:
gfortran -o server server.f90 gfortran -o client client.f90 (若使用MPI,需替换为mpif90并添加-lmpi参数)
运行程序
./server & # 后台运行服务器 ./client # 运行客户端 perror或自定义错误逻辑,处理socket、bind等系统调用的失败情况。socklen_t)。iso_c_binding接口说明(Fortran标准文档)。libevent或Boost.Fusion的Fortran绑定。以上内容基于CentOS 7/8环境验证,基础示例可满足简单网络通信需求。