module wsa_network use iso_c_binding implicit none integer, parameter::wsa_description_length_plus_1 = 256 type, bind(c) :: wsadata integer(kind=c_int16_t)::wVersion integer(kind=c_int16_t)::wHighVersion integer(kind=c_short)::iMaxSockets integer(kind=c_short)::iMaxUdpDg type(c_ptr)::lpVendorInfo character(len=1, kind=c_char), dimension(wsa_description_length_plus_1)::szDescription character(len=1, kind=c_char), dimension(wsa_description_length_plus_1)::szSystemStatus end type contains subroutine startup() use iso_c_binding implicit none interface function wsa_startup(v, p) bind(c, name="WSAStartup") use iso_c_binding integer(kind=c_int16_t), value::v type(c_ptr), value::p integer(kind=c_int)::wsa_startup end function wsa_startup end interface type(wsadata), target::startup_data integer::res ! need to use wVersionRequested = MAKEWORD(2, 2); res = wsa_startup(int(z'0202', kind=c_int16_t), c_loc(startup_data)) if(res /= 0) then Print *, "Windows Networking failed to start" Print *, "Error=", res stop end if end subroutine startup end module wsa_network