Re: Widnows sending RST in tpc/ip connection
- From: "Niklas Olsson" <niklaso@xxxxxxxxxxx>
- Date: Wed, 23 Nov 2005 16:42:08 +0100
I found a newsgroup thread that might explained this a bit..
the person wrote
"Incoming TCP packets are always delivered to the
normal TCP stack. If it didn't send out the original SYN packet, it
won't recognize the reply as belonging to a valid connection, and will
reject it with a RST"
This seems to be the issue I have encountered, but I don't know how to solve
it.
/Niklas
"Niklas Olsson" <niklaso@xxxxxxxxxxx> wrote in message
news:%23mLLWND8FHA.2608@xxxxxxxxxxxxxxxxxxxxxxx
>
> "Dave Lowther" <davel@xxxxxxxxx> wrote in message
> news:OiWa$GD8FHA.1148@xxxxxxxxxxxxxxxxxxxxxxx
>> "Niklas Olsson" wrote in message
>>>
>>> Thank you for the suggestions,
>>> however I can't get it to work, but maybe I'm doing it wrong.
>>> I used
>>> Socket = socket (AF_INET, SOCK_STREAM, 0):
>>> and then
>>> local_sin.sin_family = AF_INET;
>>> local_sin.sin_port = htons (nPort);
>>> local_sin.sin_addr.s_addr = htonl (INADDR_ANY);
>>> bind (Socket, (struct sockaddr *) &local_sin,
>>> sizeof (local_sin)
>>>
>>> I thought that this might be enough, but is it?
>>> I tried also to call listen() after bind but I always end up with
>>> windows (or some program other than mine) sending the reset message.
>>> Since everything works find if I let winsock connect, there must be
>>> something I don't do correctly.
>>> (my SYN message seem to be working fine (I get back the SYN,ACK) and in
>>> comparassion to the SYN winsock send I can't find any differencies
>>> except checksum)
>>> I don't have any firewall running that would block.
>>
>> Is your code a TCP/IP client, or server ?
>>
>> Probably not necessary but I usually memset() the struct sockaddr with
>> all 0's before filling out the required fields.
>>
>> If it's a client:
>> o You shouldn't be setting the port number for bind, in fact why call
>> bind at all.
>> o You should be calling connect()
>>
>> If it's a server:
>> o You should call socket(), bind(), listen(), accept()
>> o You should be setting the port number with bind
>> o You should use the socket returned by accept() to talk to the client.
>>
>> HTH
>>
>> Dave.
>>
>
> Thanks for the suggestions Dave,
> The thing is, I can't use Connect() (it's just to slow (if there is no
> peer in the other end))
> So I communicate directly with the adapter and send my message.
> (and my program is a client)
> I got fooled earlier that it worked because the windows firewall was on,
> which makes the ports stealth if I'm not mistaken but now that I turned it
> off, windows will answer with a reset message that the port I send on is
> not in use.
> But perhaps it's not winsock I should look at, I just want to tell windows
> that the port 9704 (or any other I specify) is un use and that it should
> not send any reset message.
>
> thanks
> /Niklas
>
.
- Follow-Ups:
- Re: Widnows sending RST in tpc/ip connection
- From: Niklas Olsson
- Re: Widnows sending RST in tpc/ip connection
- References:
- Widnows sending RST in tpc/ip connection
- From: Niklas Olsson
- Re: Widnows sending RST in tpc/ip connection
- From: Niklas Olsson
- Re: Widnows sending RST in tpc/ip connection
- From: Dave Lowther
- Re: Widnows sending RST in tpc/ip connection
- From: Niklas Olsson
- Widnows sending RST in tpc/ip connection
- Prev by Date: Re: check if port is open?
- Next by Date: Re: check if port is open?
- Previous by thread: Re: Widnows sending RST in tpc/ip connection
- Next by thread: Re: Widnows sending RST in tpc/ip connection
- Index(es):
Relevant Pages
|