在Ubuntu上进行Fortran网络编程,你可以使用GNU Fortran编译器(gfortran)和套接字编程接口。以下是一个简单的示例,展示了如何在Fortran中创建一个TCP服务器和客户端。
首先,确保你已经安装了gfortran。如果没有安装,可以使用以下命令进行安装:
sudo apt update
sudo apt install gfortran
创建一个名为server.f90
的文件,并添加以下代码:
program server
use iso_c_binding
implicit none
integer, parameter :: port = 12345
integer :: server_socket, client_socket
integer :: addr_len, status
character(len=1024) :: buffer
type(c_ptr) :: addr
! 创建套接字
server_socket = socket(AF_INET, SOCK_STREAM, 0)
if (server_socket < 0) then
print *, "Error creating socket"
stop
end if
! 绑定套接字到端口
addr = c_loc(port)
status = bind(server_socket, addr, sizeof(port))
if (status < 0) then
print *, "Error binding socket"
stop
end if
! 监听连接
status = listen(server_socket, 5)
if (status < 0) then
print *, "Error listening on socket"
stop
end if
print *, "Server is listening on port", port
! 接受连接
addr_len = sizeof(port)
client_socket = accept(server_socket, addr, addr_len)
if (client_socket < 0) then
print *, "Error accepting connection"
stop
end if
print *, "Client connected"
! 接收数据
status = recv(client_socket, buffer, sizeof(buffer), 0)
if (status < 0) then
print *, "Error receiving data"
stop
end if
print *, "Received message:", trim(adjustl(buffer))
! 发送响应
buffer = "Hello from server!"
status = send(client_socket, buffer, sizeof(buffer), 0)
if (status < 0) then
print *, "Error sending data"
stop
end if
! 关闭套接字
close(client_socket)
close(server_socket)
end program server
创建一个名为client.f90
的文件,并添加以下代码:
program client
use iso_c_binding
implicit none
integer, parameter :: port = 12345
integer :: client_socket
integer :: addr_len, status
character(len=1024) :: buffer
type(c_ptr) :: addr
! 创建套接字
client_socket = socket(AF_INET, SOCK_STREAM, 0)
if (client_socket < 0) then
print *, "Error creating socket"
stop
end if
! 设置服务器地址
addr = c_loc(port)
status = connect(client_socket, addr, sizeof(port))
if (status < 0) then
print *, "Error connecting to server"
stop
end if
print *, "Connected to server"
! 发送数据
buffer = "Hello from client!"
status = send(client_socket, buffer, sizeof(buffer), 0)
if (status < 0) then
print *, "Error sending data"
stop
end if
! 接收响应
status = recv(client_socket, buffer, sizeof(buffer), 0)
if (status < 0) then
print *, "Error receiving data"
stop
end if
print *, "Received message:", trim(adjustl(buffer))
! 关闭套接字
close(client_socket)
end program client
首先编译服务器程序:
gfortran -o server server.f90
然后编译客户端程序:
gfortran -o client client.f90
启动服务器:
./server
在另一个终端中启动客户端:
./client
你应该会看到服务器和客户端之间的通信。
希望这个示例能帮助你在Ubuntu上进行Fortran网络编程!