使用python进行套接字通信时出错
我正在尝试使用一个套接字与使用python的客户机-服务器通信,我希望通过我的客户机发送一个纬度、经度、一个小时和一个日期,以获取grib文件中的压力和温度,但是我的客户机脚本给了我这个错误 Client“JSON_OBJECT=response.loads(response.read()) AttributeError:“str”对象没有“loads”属性 在我的服务器上,我觉得错误在这个位置使用python进行套接字通信时出错,python,Python,我正在尝试使用一个套接字与使用python的客户机-服务器通信,我希望通过我的客户机发送一个纬度、经度、一个小时和一个日期,以获取grib文件中的压力和温度,但是我的客户机脚本给了我这个错误 Client“JSON_OBJECT=response.loads(response.read()) AttributeError:“str”对象没有“loads”属性 在我的服务器上,我觉得错误在这个位置 "Conn.send (get_pressure_and_temperature (request_
"Conn.send (get_pressure_and_temperature (request_string))"
"JSON_OBJECT = json.loads (request_string)"
这是我的客户代码
import socket
import os
import sys
import json
timestamp = 20160210
hour = 6
latitude = 20
longitude = 20
HOST = '' # The remote host
PORT = 10000 # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
#latitude = raw_input ("latitude: \t" )
#longitude = raw_input ("longitude: \t" )
#s.send(latitude)
#s.send(longitude)
#s.send(string)
string = {"timestamp": timestamp, "hour": hour, "lat": latitude, "long": longitude}
s.send(json.dumps(string))
response = s.recv(1024)
json_object = response.loads(response)
s.close()
print 'Received', repr(json_object)
服务器的主要功能是:
必要进口
import math
import numpy
import pygrib
import sys
import time
import pressure_temperature
import aux
import socket
import os
import json
args=sys.argv # List of arguments of the comand line
def get_pressure_and_temperature(request_string):
json_object = json.loads(request_string)
print json_object
timestamp = int(json_object["timestamp"])
print timestamp
hour = float(json_object["hour"])
print hour
latitude = float(json_object["lat"])
print latitude
longitude = float(json_object["long"])
print longitude
pressure_temperature_result = pressure_temperature.build_data(timestamp, hour, latitude, longitude)
print "result = ", pressure_temperature_result
return json.dumps(pressure_temperature_result)
HOST = '' # Symbolic name meaning all available interfaces
PORT = 10000 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
while True:
conn, cliente = s.accept()
pid = os.fork()
if pid == 0:
s.close()
print 'Connected by', cliente
while True:
request_string = conn.recv(1024)
conn.send(get_pressure_and_temperature(request_string))
if not request_string: break
print "ok"
print "Finalizando conexao com cliente", cliente
#conn.close()
sys.exit(0)
else:
conn.close()
我想你的意思是
json.loads(response)
对不起,你能指给我看吗?我看到了,谢谢,这里json\u object=response.loads(response)
应该是json\u object=json.loads(response)
。因为response
是字符串(或字节)您需要使用json
模块将其转换为具有函数的json对象