On 05Dec2015 13:21, Marc Eymard <marc_eym...@hotmail.com> wrote:
Hi tutor,
I am trying to locate the first blank line in the first received packet when pinging an internet server using a socket object.

First up: everything ALan already said.

Next:

Note that the HTTP response need not all be in a single packet, though that is not your problem.

My assumption is there will be a mandatory blank line right after the http headers in accordance with the http protocol.

There certainly should be.

Consider the following:
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect( ('www.py4inf.com/code/', 80) )
mysock.send('GET http://www.py4inf.com/code/' + ' HTTP/1.0\n\n')
data_str = mysock.recv(700)

My question:

Why is the following statement False when there is an actual blank line in the received packet:
   '\n\n' in data

1: You will be getting bytes backup from the server (obviously so in Python 3 and implicitly in Python 2).

2: The HTTP protocol, like most internet text protocols, ends lines with the bytes '\r\n', not just '\n'.

Therefore you should expect the bytes '\r\n\r\n' in the response data.

However, you should have discovered this already by doing some debugging. Since you're clearly not getting the response you expected, the very first step on your part should be to print our the received data, for example by adding:

 print(repr(data_str))

after your recv() call. Then you could inspect the received data and probably have seen the '\r' characters.

Cheers,
Cameron Simpson <c...@zip.com.au>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to