2013-10-16 3 views
0

내 첫 번째 질문을 해결해 주셔서 감사합니다.하지만 마지막 문제가 있습니다.파이썬 소켓 클라이언트 프로그램 2 (요청 받기)

#import socket module 

import sys 
import httplib 
from socket import * 
serverName = sys.argv[1] 
serverPort = int(sys.argv[2]) 
filename = sys.argv[3] 
clientSocket = socket(AF_INET,SOCK_STREAM) 
clientSocket.connect((serverName,serverPort)) 
clientSocket.send("GET /filename") 
while True: 
    data = clientSocket.recv(1024) 
    if not data: 
     break 
    print data,filename 
clientSocket.close() 

마지막으로, 나는이 특정 filname.I와 콘텐츠를 수신 할 수없는 점에 생각 "/" 는 내가 그것을 어떻게 해결할 수 있습니까 ??

+1

무엇을 받으시겠습니까? –

답변

1

python requests 패키지를 사용해 보셨습니까? (최소한의)

clientSocket.send("GET /filename") 

해야 할 : 당신이 문자열 내에서 filename을 쓸 때

clientSocket.send("GET /%s" % filename) 

, 그것은 해당 평가하지 않습니다

어느 쪽이든, 당신은 여기에 문제가있다 대신 filename 변수를 사용해야합니다. string formatting

1

이 프로그램은 HTTP 서버와 통신합니까?

그런 다음 HTTP 헤더의 끝을 올바르게 나타내려면 CR + LF를 두 번 보내야합니다.

clientSocket.send("GET /{}\r\n\r\n".format(filename)) 
+0

소켓 서버에 연결되어 있습니다.하지만 \ r \ n \ r \ n에 대해 더 많이 알 수 있습니까? 그것은 http potocol의 지식에 관한 것입니까? – user2877854

+0

@ user2877854, '\ r \ n \ r \ n'은 http 본문과 http 헤더를 구분합니다. http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.1 – falsetru

관련 문제