문제: response의 411 status code
여기서 LENGTH REQUIRED는 Content-Length 미입력을 말하는데
Content-Length 값이 잘못 입력된 줄 알아서 계속 고쳐봤는데 해결이 안됐다.
파이썬 triple quote가 interpret되는 과정에서 new line에 해당하는 개행 문자를 추가해서 문제가 생겼었었다.
print(message.encode())로 확인해보니 \n 이 추가돼 있었다.
해결: 단일 따옴표 string으로 바꿔줌.
response 메세지가 정상적으로 왔다.
411 error 코드
from socket import *
serverName = '0.00.00.000' //임의로 넣은 IP 주소
serverPort = 00000 //임의로 넣은 port #
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
message = '''POST /getcode HTTP/0.1 //에러 원인 줄
Host: 0.00.00.000\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 26\r\n\r\n
name=이름&sid=A000000''' // 임의
clientSocket.send(message.encode())
response = clientSocket.recv(1024)
print("response:", response.decode())
response = clientSocket.recv(1024)
print("response:", response.decode())
clientSocket.close()
정상 코드
from socket import *
serverName = '0.00.00.000'
serverPort = 00000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
message = 'POST /getcode HTTP/0.1\r\nHost: 0.00.00.000\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 26\r\n\r\nname=이름&sid=A000000'
clientSocket.send(message.encode())
response = clientSocket.recv(1024)
print("response:", response.decode())
response = clientSocket.recv(1024)
print("response:", response.decode())
clientSocket.close()
수업: 데이터 통신 data communication
실습: 소켓 프로그래밍 socket programming