2016-11-12 3 views
0

Ich habe einige Probleme mit diesem Python-Client. Ich würde es begrüßen, wenn mir jemand sagen könnte, was los ist.Python TCP-Client funktioniert nicht

import socket, sys, time, os 

host = '155.94.243.10' 
port = 80 

mySocket = socket.socket() 
mySocket.connect((host,port)) 

message = input('>>>') 
while message != 'q': 
    mySocket.send(message.encode()) 
    data = mySocket.recv(1024).decode() 
    print('Received from server: ' + str(data)) 
    message = input('>>>') 
mySocket.close() 

Ich verwende "GET/HTTP/1.1" als Eingabe.

Ich bekomme keine Antwort vom Server, sollte ich eine Fehlermeldung bekommen (ich glaube)

Edit: Ich habe wireshark zu bestätigen ich an den Server anschließe.

Vielen Dank im Voraus.

+1

Ich schlage vor, dass Sie aufhören, das Rad neu zu erfinden und einen der vielen Python http-Clients da draußen zu verwenden. Python-Anfragen können sehr empfohlen werden – e4c5

+1

@ e4c5 Ich werde sicher sein, einen Blick darauf zu werfen! Ich mache das auch nur, um etwas über TCP zu lernen. Danke für den Vorschlag. –

+0

@ Zimm3r Nein, dies ist eindeutig ein HTTP-Client, der sich mit einem HTTP-Server verbindet, nicht mit sich selbst. Er sendet, der HTTP-Server liest die Eingabe und sendet dann eine Antwort zurück, die das Programm liest. Es ist richtig strukturiert. – Natecat

Antwort

2

Der Client muss nach allen Headern eine leere Zeile senden. Er informiert den Server, dass er alle Header erhält und er kann eine Antwort senden (oder er muss den Body lesen, wenn Sie POST senden).

import socket 
import sys 
import time 
import os 

#host = '155.94.243.10' 
host = 'stackoverflow.com' 
port = 80 

mySocket = socket.socket() 
mySocket.connect((host,port)) 

message = input('>>>') 

while message != 'q': 

    message += '\n\n' 
    #message = 'GET/HTTP/1.1\n\n' 

    mySocket.send(message.encode()) 
    data = mySocket.recv(1024).decode() 
    print('Received from server: ' + str(data)) 
    message = input('>>>') 
mySocket.close() 

EDIT: Es scheint '155.94.243.10' Bedürfnisse andere Header Ergebnis zu erhalten. Versuchen Sie

message = 'GET/HTTP/1.1\nHost: 155.94.243.10\n\n' 
+0

Danke, ich habe versucht, die Zeilenumbrüche mit der Eingabe einzufügen. –