Networking Forums

Networking Forums > Computer Networking > Linux Networking > Troubled with a socket connection problem... please help

Reply
Thread Tools Display Modes

Troubled with a socket connection problem... please help

 
 
Mark Kromski
Guest
Posts: n/a

 
      04-22-2004, 07:02 AM

Can I post here an issue we have with Redhat, posting a message here
is our last option to find a solution.

The problem:

We are creating a socket (dgram) as a server.

Then we want to connect on it with an other application as client.

When we connect we always get : connection refused (errno 111)

We do not face this problem when we do not use symbolic links to socket;

we do have it, when we use symbolic links (IQ_bus -> /tmp/1010101)

We are using RedHat 7.2 on an Intel PC.

We're very troubled with this issue and hope that one of you can help us

or point us to a solution or explanation.


Best Regards,


 
Reply With Quote
 
 
 
 
DoesntMatter
Guest
Posts: n/a

 
      04-22-2004, 06:14 PM
Mark Kromski wrote:
> Can I post here an issue we have with Redhat, posting a message here
> is our last option to find a solution.
>
> The problem:
>
> We are creating a socket (dgram) as a server.
>
> Then we want to connect on it with an other application as client.
>
> When we connect we always get : connection refused (errno 111)
>
> We do not face this problem when we do not use symbolic links to socket;
>
> we do have it, when we use symbolic links (IQ_bus -> /tmp/1010101)
>
> We are using RedHat 7.2 on an Intel PC.
>
> We're very troubled with this issue and hope that one of you can help us
>
> or point us to a solution or explanation.
>
>
> Best Regards,
>
>


Mark ,

can you be a bit more specific ?
What is the server exactly ? Do you mean a "named pipe" or a socket ?
I assume it is mapped into the filesystem ?
Is the link crossing filesystems ? If not , do you have the same problem
with a hard link ?

....

 
Reply With Quote
 
Mark Kromski
Guest
Posts: n/a

 
      04-27-2004, 06:18 AM


DoesntMatter wrote:

> Mark Kromski wrote:
> > Can I post here an issue we have with Redhat, posting a message here
> > is our last option to find a solution.
> >
> > The problem:
> >
> > We are creating a socket (dgram) as a server.
> >
> > Then we want to connect on it with an other application as client.
> >
> > When we connect we always get : connection refused (errno 111)
> >
> > We do not face this problem when we do not use symbolic links to socket;
> >
> > we do have it, when we use symbolic links (IQ_bus -> /tmp/1010101)
> >
> > We are using RedHat 7.2 on an Intel PC.
> >
> > We're very troubled with this issue and hope that one of you can help us
> >
> > or point us to a solution or explanation.
> >
> >
> > Best Regards,
> >
> >

>
> Mark ,
>
> can you be a bit more specific ?
> What is the server exactly ? Do you mean a "named pipe" or a socket ?
> I assume it is mapped into the filesystem ?
> Is the link crossing filesystems ? If not , do you have the same problem
> with a hard link ?
>


The server is a process called ipc, which is creating the socket, which is
mapped into the filesystem; it is somewhere
in the user-directory, pointing to /tmp/10101 (name of the socket).

The nt-application connect to this socket, as a client.

When I isolate the total code of the sockets from the application (nt) and the
ipc-process, I do not have a problem; but I do not use symbolic links there.

Best Regards,

Mark

>
> ...


--
------------------------------------------------------
Mark Kromski
Tools responsible for aBU SW CC

Alcatel BND
Francis Wellesplein 1
B 2018 Antwerpen

Tel : +32 3 2407124
GSM : +32 495 642929
------------------------------------------------------


 
Reply With Quote
 
DoesntMatter
Guest
Posts: n/a

 
      04-27-2004, 06:51 AM
Mark Kromski wrote:
>
> DoesntMatter wrote:
>
>
>>Mark Kromski wrote:
>>
>>>Can I post here an issue we have with Redhat, posting a message here
>>>is our last option to find a solution.
>>>
>>>The problem:
>>>
>>>We are creating a socket (dgram) as a server.
>>>
>>>Then we want to connect on it with an other application as client.
>>>
>>>When we connect we always get : connection refused (errno 111)
>>>
>>>We do not face this problem when we do not use symbolic links to socket;
>>>
>>>we do have it, when we use symbolic links (IQ_bus -> /tmp/1010101)
>>>
>>>We are using RedHat 7.2 on an Intel PC.
>>>
>>>We're very troubled with this issue and hope that one of you can help us
>>>
>>>or point us to a solution or explanation.
>>>
>>>
>>>Best Regards,
>>>
>>>

>>
>>Mark ,
>>
>>can you be a bit more specific ?
>>What is the server exactly ? Do you mean a "named pipe" or a socket ?
>>I assume it is mapped into the filesystem ?
>>Is the link crossing filesystems ? If not , do you have the same problem
>>with a hard link ?
>>

>
>
> The server is a process called ipc, which is creating the socket, which is
> mapped into the filesystem; it is somewhere
> in the user-directory, pointing to /tmp/10101 (name of the socket).
>
> The nt-application connect to this socket, as a client.
>
> When I isolate the total code of the sockets from the application (nt) and the
> ipc-process, I do not have a problem; but I do not use symbolic links there.
>
> Best Regards,
>
> Mark
>
>
>>...

>
>
> --
> ------------------------------------------------------
> Mark Kromski
> Tools responsible for aBU SW CC
>
> Alcatel BND
> Francis Wellesplein 1
> B 2018 Antwerpen
>
> Tel : +32 3 2407124
> GSM : +32 495 642929
> ------------------------------------------------------
>
>


I try to summarize what you said up to now (maybe it would be good
sending some snippets of code) :

On server side , you do something along the lines of (assuming C)

ConSocket = socket(AF_UNIX,SOCK_STREAM,0);
if (-1 == ConSocket) ...
ReturnValue = bind(ConSocket,"/tmp/007",sizeof(struct sockaddr));
if (-1 == ReturnValue) ....
ReturnValue = listen(ConSocket,1);
if (-1 == ReturnValue) ...

You can connect to that socket (also in the /tmp directory), but you
can't connect anymore when it becomes a symbolic link (even a symbolic
link in the same directory ?)

Furthermore , as you are speaking about linux and nt , I assume server
and client are distinct machines ...

But the important part : everything works , you claim , as long as you
keep away from symbolic links ? Even if that symbolic link is into the
same directory ? That's it ?
How do you address the socket from within the NT filesystem ? Can you
elaborate a bit ?




 
Reply With Quote
 
Mark Kromski
Guest
Posts: n/a

 
      04-27-2004, 11:57 AM


DoesntMatter wrote:

> Mark Kromski wrote:
> >
> > DoesntMatter wrote:
> >
> >
> >>Mark Kromski wrote:
> >>
> >>>Can I post here an issue we have with Redhat, posting a message here
> >>>is our last option to find a solution.
> >>>
> >>>The problem:
> >>>
> >>>We are creating a socket (dgram) as a server.
> >>>
> >>>Then we want to connect on it with an other application as client.
> >>>
> >>>When we connect we always get : connection refused (errno 111)
> >>>
> >>>We do not face this problem when we do not use symbolic links to socket;
> >>>
> >>>we do have it, when we use symbolic links (IQ_bus -> /tmp/1010101)
> >>>
> >>>We are using RedHat 7.2 on an Intel PC.
> >>>
> >>>We're very troubled with this issue and hope that one of you can help us
> >>>
> >>>or point us to a solution or explanation.
> >>>
> >>>
> >>>Best Regards,
> >>>
> >>>
> >>
> >>Mark ,
> >>
> >>can you be a bit more specific ?
> >>What is the server exactly ? Do you mean a "named pipe" or a socket ?
> >>I assume it is mapped into the filesystem ?
> >>Is the link crossing filesystems ? If not , do you have the same problem
> >>with a hard link ?
> >>

> >
> >
> > The server is a process called ipc, which is creating the socket, which is
> > mapped into the filesystem; it is somewhere
> > in the user-directory, pointing to /tmp/10101 (name of the socket).
> >
> > The nt-application connect to this socket, as a client.
> >
> > When I isolate the total code of the sockets from the application (nt) and the
> > ipc-process, I do not have a problem; but I do not use symbolic links there.
> >
> > Best Regards,
> >
> > Mark
> >
> >
> >>...

> >
> >
> > --
> > ------------------------------------------------------
> > Mark Kromski
> > Tools responsible for aBU SW CC
> >
> > Alcatel BND
> > Francis Wellesplein 1
> > B 2018 Antwerpen
> >
> > Tel : +32 3 2407124
> > GSM : +32 495 642929
> > ------------------------------------------------------
> >
> >

>
> I try to summarize what you said up to now (maybe it would be good
> sending some snippets of code) :
>
> On server side , you do something along the lines of (assuming C)
>
> ConSocket = socket(AF_UNIX,SOCK_STREAM,0);
> if (-1 == ConSocket) ...
> ReturnValue = bind(ConSocket,"/tmp/007",sizeof(struct sockaddr));
> if (-1 == ReturnValue) ....
> ReturnValue = listen(ConSocket,1);
> if (-1 == ReturnValue) ...
>
> You can connect to that socket (also in the /tmp directory), but you
> can't connect anymore when it becomes a symbolic link (even a symbolic
> link in the same directory ?)
>
> Furthermore , as you are speaking about linux and nt , I assume server
> and client are distinct machines ...
>
> But the important part : everything works , you claim , as long as you
> keep away from symbolic links ? Even if that symbolic link is into the
> same directory ? That's it ?
> How do you address the socket from within the NT filesystem ? Can you
> elaborate a bit ?


--
We are a step further now. What I have is three processes:

- The nt
- the ipc -process (router for communicating)
- the asim-process (overall manager)

The asim forks the ipc-process and communicates to it via a socket. This one works!!

It also forks the nt-process, and this one communicates as client via a socket to
the ipc-process (server for the socket)

When I do this, the nt can not connect to the socket (connection refused).

When I comment out the forking of the nt-process (in the asim-tool), and starts it
up manually at the unix-prompt, the
socket connects!!!

So I guess there is something wrong with the forking (I close all file-descriptors
from 3 till 255)

Do you have any idea what still can go wrong with forking (Linux, Redhat 7.2)?

Best Regards,

Willem


------------------------------------------------------
Mark Kromski
Tools responsible for aBU SW CC

Alcatel BND
Francis Wellesplein 1
B 2018 Antwerpen

Tel : +32 3 2407124
GSM : +32 495 642929
------------------------------------------------------


 
Reply With Quote
 
DoesntMatter
Guest
Posts: n/a

 
      04-27-2004, 07:34 PM
Willem , Mark ,

Mark Kromski wrote:

<huge resetting snip> :-)

So reading a lot between the lines , suddenly realizing that NT does not
stand for the Microsoft operating system and so on ... :

You have some kind of multiprocess application on one and the same Linux
system , so I literally mean on the same physical system , right ?

There is some toplevel process 'asim' that spawns two other processes,
the one called "ipc" the other called "nt" , right ?

The communication between "asim" and "ipc" is working as expected , I
understand ? How is it setup exactly ? A few snippets of code please ...

The communication between "nt" and "ipc" isn't working as expected. You
did set up some socket in the unix domain , I understand. Is that right
? Can you give a few lines of code ? YOu are sure communicating over a
socket and not over a pair of filedescriptors of pipe ?

So bottom line : can you give me some concrete and clear explanation of
what you are doing. I would be _extremely_ surprised if it was a RedHat
problem in this area. You'll find out with a Red Head :-p

Ready to help further ...

 
Reply With Quote
 
DoesntMatter
Guest
Posts: n/a

 
      04-27-2004, 07:35 PM
Willem , Mark ,

Mark Kromski wrote:

<huge resetting snip> :-)

So reading a lot between the lines , suddenly realizing that NT does not
stand for the Microsoft operating system and so on ... :

You have some kind of multiprocess application on one and the same Linux
system , so I literally mean on the same physical system , right ?

There is some toplevel process 'asim' that spawns two other processes,
the one called "ipc" the other called "nt" , right ?

The communication between "asim" and "ipc" is working as expected , I
understand ? How is it setup exactly ? A few snippets of code please ...

The communication between "nt" and "ipc" isn't working as expected. You
did set up some socket in the unix domain , I understand. Is that right
? Can you give a few lines of code ? YOu are sure communicating over a
socket and not over a pair of filedescriptors of pipe ?

So bottom line : can you give me some concrete and clear explanation of
what you are doing. I would be _extremely_ surprised if it was a RedHat
problem in this area. You'll find out with a Red Head :-p

Ready to help further ...

 
Reply With Quote
 
Willem Wijnant
Guest
Posts: n/a

 
      04-28-2004, 06:24 AM
DoesntMatter wrote:
>
> Willem , Mark ,
>
> Mark Kromski wrote:
>
> <huge resetting snip> :-)
>
> So reading a lot between the lines , suddenly realizing that NT does not
> stand for the Microsoft operating system and so on ... :
>
> You have some kind of multiprocess application on one and the same Linux
> system , so I literally mean on the same physical system , right ?

correct
>
> There is some toplevel process 'asim' that spawns two other processes,
> the one called "ipc" the other called "nt" , right ?

correct

>
> The communication between "asim" and "ipc" is working as expected , I
> understand ? How is it setup exactly ? A few snippets of code please ...


> dgramsocket::dgramsocket (fdType & pfd,

domainType pdomain,
modeType pmode,
NameType& pname)
throw (CannotCreateSocket)
{

sname=pname;
sdomain=pdomain;
stype=SOCK_DGRAM;
smode=pmode;
int tmpfd;
char tmpfile[64]="/tmp/lsXXXXXX";
char ldevName[64];

char buf [2]="s";

int s;
int wxfer;

#ifdef IPC_DEBUG
printf ("creating socket mode %i %s\n",smode,sname.GetName());
#endif
if ((s = socket(AF_UNIX, SOCK_DGRAM, 0)) < 0)
{
perror ("socket call ");
}

memset (&saun,0,sizeof(saun));
saun.sun_family = AF_UNIX;
// strcpy (saun.sun_path, tmpnam(NULL));
mkstemp(saun.sun_path);

if (smode == SERVER)
{
unlink (sname.GetName());
strcpy (saun.sun_path, sname.GetName());
if (bind(s, (struct sockaddr *) &saun, sizeof(struct sockaddr)) <
0)
{
perror ("SERVER : bind");
throw CannotCreateSocket();
}

#ifdef IPC_DEBUG
printf ("started SERVER %s\n",sname.GetName());
#endif


}
else
{
#ifdef IPC_DEBUG
printf ("staring CLIENT %s\n",sname.GetName());
#endif
if (!sname.isSocket ())
{
printf ("Socket ERROR not a socket name \n");
}

#ifdef IPC_DEBUG
printf ("binding CLIENT %s\n",sname.GetName());
#endif
unlink (saun.sun_path);

if((tmpfd=mkstemp(tmpfile))<0)
{
perror("mkstemp failed:");
}
sprintf(ldevName,"%ss", tmpfile);

strcpy (saun.sun_path, ldevName);

if (bind(s, (struct sockaddr *) &saun, sizeof(struct sockaddr)) <
0)
{
perror ("Binding Client : ");
throw CannotCreateSocket();
}

strcpy (saun.sun_path, sname.GetName());
#ifdef IPC_DEBUG
printf ("connecting CLIENT %s\n",sname.GetName());
#endif
if (connect (s, (struct sockaddr *) &saun, sizeof (struct
sockaddr)))
{

perror ("connect Client : ");
}


// Send the dummy wake up call allowing the server to set up the
// connection address.
wxfer=write (s, buf, InitmsgLength);



#ifdef IPC_DEBUG
printf ("started CLIENT %s\n",sname.GetName());
#endif

}

fd.Setfd (s);
pfd=fd;

}




> The communication between "nt" and "ipc" isn't working as expected. You
> did set up some socket in the unix domain , I understand. Is that right
> ?

Correct, at the ipc-side, it is the same codeas between the asim and ipc

> Can you give a few lines of code ? YOu are sure communicating over a
> socket and not over a pair of filedescriptors of pipe ?


For sure we use sockets:

At nt-side we use similar code:

unsigned long
LdgsockIfc::init (const char* devname,
unsigned long flags)
{
int tmpfd;
char tmpfile[64] = "/tmp/lsXXXXXX";
/* ldevname is either the name of the client socket, */
/* or otherwise the name of the server socket. The */
/* server socket is created in the /tmp directory also */
/* because a socket node cannot be created in a clear- */
/* case directory */
char ldevname[64];
struct sockaddr_un unix_addr;
struct stat statbuf;

static int init=0;
// init for trace and debug

if(init==0)
{
init++;
trc_register("lsock",TRC_INFO,&trc_lsock);
dbg_link("lsock",lsockHelp,lsockCommand);
}


/* prepase the temp name */
if ((tmpfd = mkstemp(tmpfile)) < 0)
{
perror ("mkstemp failed");
goto err_ret;
}
sprintf (ldevname, "%ss", tmpfile);

/* Create socket... */
if ((fd = socket (AF_UNIX,SOCK_DGRAM,0)) < 0)
{
perror ("socket creation failed");

goto err_close_tmpfd;
}

/* Bind to it... */
memset (&unix_addr,0,sizeof(unix_addr));
unix_addr.sun_family = AF_UNIX;
strcpy (unix_addr.sun_path,ldevname);
if (bind(fd,(struct sockaddr *)&unix_addr,sizeof(struct sockaddr)) <
0)
{
perror ("bind failed");
goto err_close;
}

/* Initialise state: no server, no client */
state_m = dgs_invalid_e;

/* Try to be a client... */
do
{
char dummybuf[2] = " ";

/* Is there an lsock server with that name ? */
if (stat(devname,&statbuf)!=0 || ! S_ISSOCK(statbuf.st_mode))
{
break;
}

/* Try to connect... */
// strcpy (unix_addr.sun_path,devname);

//
if (connect(fd,(struct sockaddr *)&unix_addr,sizeof(struct
sockaddr)) < 0) <-- here it is failing, the connect fails
{ and we go to the break
break;
}

/* Successfully connected: dummy write to let the server know our
address */
write (fd, dummybuf, 1);
state_m = dgs_connected_e;
}
while (0);

/* If we're not connected as client, become a server */
if (state_m != dgs_connected_e)

{
unlink (devname);
symlink (ldevname, devname);
state_m = dgs_single_e;
}

#ifdef __SVR4
// non blocking
if (fcntl (fd, F_SETFL, O_NDELAY | fcntl (fd, F_GETFL, 0)) < 0)
{
perror ("fcntl failed");
goto err_close;
}

// Want SIGIO / SIGPOLL
if (ioctl (fd, I_SETSIG, S_RDNORM /*| S_WRNORM -> always writable */
))
{
perror ("ioctl I_SETSIG failed");
goto err_close;
}
#else
/* tell fd which process to signal */
if (fcntl (fd, F_SETOWN, getpid ()) < 0)
{
perror ("fcntl failed");
goto err_close;
}
/* Set NONBLOCKING & ASYNC mode */
# ifdef linux
if (fcntl (fd, F_SETFL, FASYNC | O_NONBLOCK | fcntl (fd, F_GETFL, 0))
< 0)
# else
if (fcntl (fd, F_SETFL, FASYNC | FNBIO | fcntl (fd, F_GETFL, 0)) < 0)
# endif
{
perror ("fcntl failed");
goto err_close;
}
#endif

/* cleanup the temporary things */
close(tmpfd);
unlink (tmpfile);

return ERR_NO_ERROR;
err_close:
close (fd);
fd = -1;
err_close_tmpfd:
close (tmpfd);
unlink (tmpfile);
err_ret:
return LSOCK_ERR_UNSPEC;
}

>
> So bottom line : can you give me some concrete and clear explanation of
> what you are doing. I would be _extremely_ surprised if it was a RedHat
> problem in this area. You'll find out with a Red Head :-p


Explanation:

We have a "Overall Managing-tool" called asim. This one forks the ipc
process which is a router for communication.
We are now in the first step, that we have ported our "target Sw" to
Linux. This first board is the nt. Besides this we also have lt's. The
communication between these boards is managed by the ipc-process. This
works on Solaris.

Now, we want to try the communication between the nt and the ipc. It
fails on the connect, see above. This happens when
we fork (and execvp) the process in the asim-tool. If we start it up
manually (nt), the connect does not fail.

fork code:

switch(childpid=fork())
{
case 0 : // I'm alive ...

if(!window)
{
// close(0);
// close(1);
// close(2);
}


for(i=3;i<255;i++) close(i);

execvp (argv[0], argv);
perror("exec failed");
fprintf(stderr,"Plugin : exec call failed for
%s\n",filename);
// exit(-1);
break;

case -1 :
perror("fork failed");
fprintf(stderr,"Plugin : fork call failed for
%s\n",filename);
return;
break;

default :
boardArray[slot].setChildPid(childpid);

if(asam.getVerbose()>=5)
printf("The child process is forked\n");

chdir(workDir);

break;

}



Best Regards,

Willem




>
> Ready to help further ...


--
ALCATEL TELECOM
Willem Wijnant
JA23
tel.: 03/240.7647
email: (E-Mail Removed)
 
Reply With Quote
 
Mark Kromski
Guest
Posts: n/a

 
      04-30-2004, 06:47 AM
Hello,

What we know now, is the following:

We have a general-manager tool asim, a forked process ipc (forked by the
asim-tool without xterm) and a forked process nt (forked by the asim-tool
with xterm!!!)

We found-out that the problem arise by the xterm, because we start the nt up
by:

fork, execvp:
xterm -e cleartool setview -exec nt <view>

For the ipc we do:
fork, execvp:
ipc


That is why the communication between the asim, and the ipc-works, (we do
not have an xterm-here) and not between the nt and the asim (the nt is
started up in an xterm!!)

If we startup the processes manually: from the prompt, we have the same
result: with an xterm, it does not work, it does work without xterm (even
for the nt!!!)


So, we are looking for a version of xterm, or rxvt or ,...??? which does
not have this problem.

Best Regards,

Mark and Willem





Mark Kromski wrote:

> Can I post here an issue we have with Redhat, posting a message here
> is our last option to find a solution.
>
> The problem:
>
> We are creating a socket (dgram) as a server.
>
> Then we want to connect on it with an other application as client.
>
> When we connect we always get : connection refused (errno 111)
>
> We do not face this problem when we do not use symbolic links to socket;
>
> we do have it, when we use symbolic links (IQ_bus -> /tmp/1010101)
>
> We are using RedHat 7.2 on an Intel PC.
>
> We're very troubled with this issue and hope that one of you can help us
>
> or point us to a solution or explanation.
>
> Best Regards,


--
------------------------------------------------------
Mark Kromski
Tools responsible for aBU SW CC

Alcatel BND
Francis Wellesplein 1
B 2018 Antwerpen

Tel : +32 3 2407124
GSM : +32 495 642929
------------------------------------------------------


 
Reply With Quote
 
DoesntMatter
Guest
Posts: n/a

 
      04-30-2004, 01:47 PM
Willem Wijnant wrote:
> DoesntMatter wrote:
>
>>Willem , Mark ,
>>
>>Mark Kromski wrote:
>>
>><huge resetting snip> :-)
>>
>>So reading a lot between the lines , suddenly realizing that NT does not
>>stand for the Microsoft operating system and so on ... :
>>
>>You have some kind of multiprocess application on one and the same Linux
>>system , so I literally mean on the same physical system , right ?

>
> correct
>
>>There is some toplevel process 'asim' that spawns two other processes,
>>the one called "ipc" the other called "nt" , right ?

>
> correct
>
>
>>The communication between "asim" and "ipc" is working as expected , I
>>understand ? How is it setup exactly ? A few snippets of code please ...

>
>


<snip of code>

> /* Try to connect... */
> // strcpy (unix_addr.sun_path,devname);
>
> //
> if (connect(fd,(struct sockaddr *)&unix_addr,sizeof(struct
> sockaddr)) < 0) <-- here it is failing, the connect fails
> { and we go to the break
> break;
> }
>


At first sight , I don't see an issue in the code. (I would do it
differently though, but that's something else :-) )

But especially here the connect gives valuable information of its
failing through errno. (maybe perror() or strerror() to translate to
'readable') What is the reason of failing connect indicates through its
errno ?
 
Reply With Quote
 
 
 
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
A strange problem(about socket tcp connection)~~~ Harry Linux Networking 2 06-24-2007 06:43 PM
NAT and socket connection YIguchi Windows Networking 1 04-12-2007 06:19 AM
Bridge over troubled water? Skip - Working on the boat Wireless Internet 3 08-23-2006 02:44 PM
Troubled install rebuttal Lester Stiefel Windows Networking 1 03-15-2005 07:17 PM
Win 98 Network Socket Connection Fred Bogin Windows Networking 1 12-02-2003 11:14 PM



1 2 3 4 5 6 7 8 9 10 11