On 05Dec2015 13:21, Marc Eymard <[email protected]> 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 <[email protected]>
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to