2016-11-12 125 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客户端。蟒蛇的请求可以高度推荐 – 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() 

编辑:看来'155.94.243.10'需要的其他头得到的结果。尝试

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

谢谢,我试图在输入中添加换行符。 –