Dear all,
I am working on implementation of real data exchange between fortran and python. To do this the TCP socket function can be used. I know, there are other better options to implement a data exchange, but still I would like to try this one.
I have found en example, how it can be done.But, I can not compile the code. I get the error:
Fatal Error: Cannot open module file ‘ws2_32.mod’ for reading at (1): No such file or directory
I guess, I have to connect windows socket library to my code. But, I do not know, how to do this. I am new to Fortran and programming is not my main working area.
I work on Windows 10, 64-Bit. IDEs: Geany
Could you please help me and explain in details, how this problem can be solved?
Many thanks in Advance!
In addition the part of code, which can not be compiled, you can finde below. If you need more information, please let me know.
!------------------------------------------------------
! SETUP CONNECTION FUNCTION
!------------------------------------------------------
FUNCTION SETUP_CONNECTION()
!USE WINSOCKET LIBRARY
USE WS2_32
!FUNCTION TYPE
INTEGER :: SETUP_CONNECTION
!CONNECTION PARAMTERS
CHARACTER*15, PARAMETER :: IP_ADDRESS = ’134.147.101.20’
INTEGER*2, PARAMETER :: PORT = 1234
!DECLARE WINSOCKET VARIABLES
INTEGER STATUS_INITIALISE_WINSOCK
INTEGER STATUS_CONNECT_SOCKET
INTEGER :: TCP_SOCKET
INTEGER, PARAMETER :: WINSOCK_VERSION = X’202’
INTEGER SOCKADDR_SIZE
TYPE(T_WSADATA) WSAINFO
TYPE(T_SOCKADDR_IN) SOCKADDR
!INITIALISE WINSOCKET
STATUS_INIITIALISE_WINSOCK = WSASTARTUP(WINSOCK_VERSION, WSAINFO)
IF (STATUS_INITIALISE_WINSOCK .EQ. 0) THEN
WRITE(*,*) "INITIALISING WINSOCK SUCCESSFUL"
ELSE
WRITE(*,*) "ERROR: INITIALISING WINSOCK UNSUCCESSFUL"
END IF
! CREATE SOCKET
! AF_INET = IPv4 address Family
! SOCK_STREAM = two-way connection-based byte stream
! IPPROTO_TCP = TCP-Protocol
TCP_SOCKET = SOCKET(AF_INET, SOCK_STREAM, IPPROTO_TCP)
IF (TCP_SOCKET .EQ. INVALID_SOCKET) THEN
WRITE(*,*) "ERROR: SOCKET OBJECT COULD NOT BE CREATED"
SETUP_CONNECTION = -1
END IF
!CONNECT TO SERVER
SOCKADDR%SIN_FAMILY = AF_INET
SOCKADDR%SIN_PORT = HTONS(PORT)
SOCKADDR%SIN_ADDR%S_ADDR = INET_ADDR(IP_ADDRESS(1:LEN_TRIM(IP_ADDRESS)))
SOCKADDR_SIZE = SIZEOF(SOCKADDR)
STATUS_CONNECT_SOCKET = CONNECT(TCP_SOCKET, %REF(SOCKADDR), SOCKADDR_SIZE)
IF (STATUS_CONNECT_SOCKET .EQ. 0) THEN
WRITE(*,*) "CONNECTION TO SERVER ESTABLISHED"
ELSE
WRITE(*,*) "ERROR: CONNECTION TO SERVER COULD NOT BE ESTABLISHED"
WRITE(*,*) "ERRORCODE: ", WSAGetLastError()
SETUP_CONNECTION = -1
END IF
SETUP_CONNECTION = TCP_SOCKET
RETURN
END FUNCTION