2016-11-12 12 views
0

私はこのpythonクライアントにいくつかの問題があります。誰かが何が間違っているか教えてもらえれば嬉しいです。Python TCPクライアントが動作しない

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() 

入力として「GET/HTTP/1.1」を使用しています。私は、サーバーに接続してい確認するのwiresharkを使用:

私は、サーバーからの応答がない、私はエラーメッセージ(と思う)

編集を取得する必要があります。

ありがとうございます。

+1

私は、ホイールの再発明をやめ、そこに多くのpython httpクライアントを使用することをお勧めします。 python-requestsは非常にお勧めできます – e4c5

+1

@ e4c5私はそれを見てみましょう!私はまた、TCPについて学ぶためにこれをやっています。提案していただきありがとうございます。 –

+0

@ Zimm3rいいえ、これは、HTTPサーバに接続するHTTPクライアントであり、それ自体ではありません。送信すると、HTTPサーバーは入力を読み取り、プログラムが読み取った応答を返します。それは正しく構成されています。 – Natecat

答えて

2

クライアントは、すべてのヘッダーの後に空の行を送信する必要があります。すべてのヘッダーを取得し、応答を送信できることをサーバーに通知します(または、POSTを送信すると本文を読み取る必要があります)。

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:'155.94.243.10'が結果を得るために他のヘッダを必要とするようです。 Try

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

ありがとう、私は入力で改行を追加しようとしていました。 –

関連する問題