! ! fortran_gethostbyname interface ! ! ! Utility from fortranposix.f95 ! subroutine chopnull(str,len,maxlen) character(len=*), intent(inout) :: str integer, intent(in) :: len,maxlen str(len+1:maxlen)='' end subroutine chopnull ! ! gethostbyname, copying getlogin DLD 2007-12-12 ! subroutine fortran_gethostbyname(namestring, address, istat) character(len=*), intent(inout) :: namestring integer, dimension(4), intent(out) :: address integer, intent(out) :: istat character (len=len_trim(namestring)) :: query integer :: namestringlength, maxlen, querylen maxlen=len(namestring) querylen=len_trim(namestring) istat=-1 query=namestring(1:querylen) call FortranGetHostByName(query, querylen, istat, & namestring, namestringlength, & address(1), address(2), address(3), address(4)) if (istat == 0) call chopnull(namestring, namestringlength, maxlen) do i=1, 4 if (address(i) < 0) address(i)=256+address(i) end do end subroutine fortran_gethostbyname ! ! make a server socket ! subroutine fortran_mkserver(port, handle, istat) integer, intent(in) :: port integer, intent(out) :: handle, istat call fortranmakeserversocket(port, istat, handle) end subroutine fortran_mkserver ! ! close a server socket ! subroutine fortran_closeserver(handle, istat) integer, intent(inout) :: handle integer, intent(out) ::istat call fortranclosesocket(handle, istat) handle=-1 end subroutine fortran_closeserver ! ! accept input to server socket ! subroutine fortran_accept(handle, connection, istat) integer, intent(in) :: handle integer, intent(out) :: connection, istat call fortranaccept(handle, connection, istat) end subroutine fortran_accept ! ! send string to connected server socket ! subroutine fortran_send(connection, ostring, istat) integer, intent(in) :: connection character (len=*) :: ostring integer, intent(out) :: istat call fortransend(connection, ostring, len(ostring), istat) end subroutine fortran_send ! ! receive string from connected server socket ! drop newline from end of string ! subroutine fortran_receive(connection, istring, istat) integer, intent(in) :: connection character (len=*) :: istring integer, intent(out) :: istat integer :: ilen, maxlen maxlen=len(istring) ilen=maxlen call fortranreceive(connection, istring, ilen, istat) if (istat == 0) then call chopnull(istring, ilen, maxlen) ! istring=istring(1:(ilen-2)) else istring=' ' end if end subroutine fortran_receive