version 1.1, 1999/12/03 07:39:11 |
version 1.4, 2000/07/13 05:09:02 |
|
|
/* $OpenXM: OpenXM/src/asir99/io/sio.c,v 1.3 1999/11/18 09:00:38 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/io/sio.c,v 1.3 2000/02/08 04:47:11 noro Exp $ */ |
#if INET |
#if INET |
#include "ca.h" |
#include "ca.h" |
|
#include "setjmp.h" |
#include "ox.h" |
#include "ox.h" |
#if defined(VISUAL) |
#if defined(VISUAL) |
#include <winsock.h> |
#include <winsock.h> |
|
|
char *port_str; |
char *port_str; |
{ |
{ |
struct sockaddr_in sin; |
struct sockaddr_in sin; |
struct sockaddr_un s_un; |
|
struct sockaddr *saddr; |
struct sockaddr *saddr; |
int len; |
int len; |
int service; |
int service; |
|
#if !defined(VISUAL) |
|
struct sockaddr_un s_un; |
|
|
if ( use_unix ) { |
if ( use_unix ) { |
service = socket(AF_UNIX, SOCK_STREAM, 0); |
service = socket(AF_UNIX, SOCK_STREAM, 0); |
|
|
len = strlen(s_un.sun_path)+sizeof(s_un.sun_family); |
len = strlen(s_un.sun_path)+sizeof(s_un.sun_family); |
#endif |
#endif |
saddr = (struct sockaddr *)&s_un; |
saddr = (struct sockaddr *)&s_un; |
} else { |
} else |
|
#endif |
|
{ |
service = socket(AF_INET, SOCK_STREAM, 0); |
service = socket(AF_INET, SOCK_STREAM, 0); |
if ( service < 0 ) { |
if ( service < 0 ) { |
perror("in socket"); |
perror("in socket"); |
Line 142 int try_accept(af_unix,s) |
|
Line 146 int try_accept(af_unix,s) |
|
int af_unix,s; |
int af_unix,s; |
{ |
{ |
int len,c,i; |
int len,c,i; |
struct sockaddr_un s_un; |
|
struct sockaddr_in sin; |
struct sockaddr_in sin; |
|
|
|
#if !defined(VISUAL) |
|
struct sockaddr_un s_un; |
if ( af_unix ) { |
if ( af_unix ) { |
len = sizeof(s_un); |
len = sizeof(s_un); |
for ( c = -1, i = 0; (c < 0)&&(i = 10) ; i++ ) |
for ( c = -1, i = 0; (c < 0)&&(i = 10) ; i++ ) |
c = accept(s, (struct sockaddr *) &s_un, &len); |
c = accept(s, (struct sockaddr *) &s_un, &len); |
} else { |
} else |
|
#endif |
|
{ |
|
|
len = sizeof(sin); |
len = sizeof(sin); |
for ( c = -1, i = 0; (c < 0)&&(i = 10) ; i++ ) |
for ( c = -1, i = 0; (c < 0)&&(i = 10) ; i++ ) |
|
|
char *host,*port_str; |
char *host,*port_str; |
{ |
{ |
struct sockaddr_in sin; |
struct sockaddr_in sin; |
struct sockaddr_un s_un; |
|
struct sockaddr *saddr; |
struct sockaddr *saddr; |
struct hostent *hp; |
struct hostent *hp; |
int len,s,i; |
int len,s,i; |
|
#if !defined(VISUAL) |
|
struct sockaddr_un s_un; |
|
#endif |
|
|
for ( i = 0; i < 10; i++ ) { |
for ( i = 0; i < 10; i++ ) { |
|
#if !defined(VISUAL) |
if ( use_unix ) { |
if ( use_unix ) { |
if ( (s = socket(AF_UNIX,SOCK_STREAM,0)) < 0 ) { |
if ( (s = socket(AF_UNIX,SOCK_STREAM,0)) < 0 ) { |
perror("socket"); |
perror("socket"); |
Line 187 char *host,*port_str; |
|
Line 197 char *host,*port_str; |
|
len = strlen(s_un.sun_path)+sizeof(s_un.sun_family); |
len = strlen(s_un.sun_path)+sizeof(s_un.sun_family); |
#endif |
#endif |
saddr = (struct sockaddr *)&s_un; |
saddr = (struct sockaddr *)&s_un; |
} else { |
} else |
|
#endif /* VISUAL */ |
|
{ |
if ( (s = socket(AF_INET,SOCK_STREAM,0)) < 0 ) { |
if ( (s = socket(AF_INET,SOCK_STREAM,0)) < 0 ) { |
perror("socket"); |
perror("socket"); |
return -1; |
return -1; |
Line 209 char *host,*port_str; |
|
Line 221 char *host,*port_str; |
|
break; |
break; |
else { |
else { |
close(s); |
close(s); |
|
#if defined(VISUAL) |
|
Sleep(100); |
|
#else |
usleep(100000); |
usleep(100000); |
|
#endif |
} |
} |
} |
} |
if ( i == 10 ) { |
if ( i == 10 ) { |
|
|
{ |
{ |
int i; |
int i; |
unsigned char c,rc; |
unsigned char c,rc; |
|
extern int mpi_myid; |
|
|
|
#if MPI |
|
iofp[s1].s = s1; |
|
if ( mpi_myid == s1 ) { |
|
iofp[s1].in = 0; |
|
iofp[s1].out = 0; |
|
} else { |
|
iofp[s1].in = WSIO_open(s1,"r"); |
|
iofp[s1].out = WSIO_open(s1,"w"); |
|
} |
|
iofp[s1].conv = 0; |
|
iofp[s1].socket = 0; |
|
|
|
return s1; |
|
#else |
for ( i = 0; i < MAXIOFP; i++ ) |
for ( i = 0; i < MAXIOFP; i++ ) |
if ( !iofp[i].in ) |
if ( !iofp[i].in ) |
break; |
break; |
iofp[i].s = s1; |
iofp[i].s = s1; |
#if defined(VISUAL) || MPI |
#if defined(VISUAL) |
iofp[i].in = WSIO_open(s1,"r"); |
iofp[i].in = WSIO_open(s1,"r"); |
iofp[i].out = WSIO_open(s1,"w"); |
iofp[i].out = WSIO_open(s1,"w"); |
#else |
#else |
|
|
setbuffer(iofp[i].in,(char *)malloc(LBUFSIZ),LBUFSIZ); |
setbuffer(iofp[i].in,(char *)malloc(LBUFSIZ),LBUFSIZ); |
setbuffer(iofp[i].out,(char *)malloc(LBUFSIZ),LBUFSIZ); |
setbuffer(iofp[i].out,(char *)malloc(LBUFSIZ),LBUFSIZ); |
#endif |
#endif |
#if MPI |
|
iofp[i].conv = 0; |
|
iofp[i].socket = 0; |
|
#else |
|
if ( little_endian ) |
if ( little_endian ) |
c = 1; |
c = 1; |
else |
else |
|
|
strcpy(iofp[i].socket,af_sock); |
strcpy(iofp[i].socket,af_sock); |
} else |
} else |
iofp[i].socket = 0; |
iofp[i].socket = 0; |
#endif |
|
return i; |
return i; |
|
#endif |
} |
} |
|
|
#if defined(VISUAL) |
#if defined(VISUAL) |