在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網絡編程!