安装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环境验证,基础示例可满足简单网络通信需求。