Python3中,建立一个socket客户端向服务端发送json数据是报 unknown url type,为什么呢? 5
源码如下:importurllib.requestimportjsonimportsocketsend=socket.socket()ip_port=("127.0.0....
源码如下:
import urllib.request
import json
import socket
send = socket.socket()
ip_port=("127.0.0.1",8080)
send.connect(ip_port)
data = {
"a":123,
"b":456
}
values = urllib.parse.urlencode(data).encode(encoding='UTF8')
headers = {'Content-Type': 'application/json'}
print(data)
print(values)
print(json.dumps(data))
print(json.dumps(data).encode())
request = urllib.request.Request(url=ip_port, headers=headers, data=json.dumps(data).encode())
response = urllib.request.urlopen(request)
执行时报错:ValueError: unknown url type: "('127.0.0.1', 8080)"
这个情况如何处理呢 展开
import urllib.request
import json
import socket
send = socket.socket()
ip_port=("127.0.0.1",8080)
send.connect(ip_port)
data = {
"a":123,
"b":456
}
values = urllib.parse.urlencode(data).encode(encoding='UTF8')
headers = {'Content-Type': 'application/json'}
print(data)
print(values)
print(json.dumps(data))
print(json.dumps(data).encode())
request = urllib.request.Request(url=ip_port, headers=headers, data=json.dumps(data).encode())
response = urllib.request.urlopen(request)
执行时报错:ValueError: unknown url type: "('127.0.0.1', 8080)"
这个情况如何处理呢 展开
2个回答
展开全部
参考这个客户端程序,我觉得是你的服务端有问题
import socket
HOST = '127.0.0.1' # 服务器的主机名或者 IP 地址
PORT = 65432 # 服务器使用的端口
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
服务端写法
import socket
HOST = '127.0.0.1' # 标准的回环地址 (localhost)
PORT = 65432 # 监听的端口 (非系统级的端口: 大于 1023)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
import socket
HOST = '127.0.0.1' # 服务器的主机名或者 IP 地址
PORT = 65432 # 服务器使用的端口
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
服务端写法
import socket
HOST = '127.0.0.1' # 标准的回环地址 (localhost)
PORT = 65432 # 监听的端口 (非系统级的端口: 大于 1023)
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
2019-03-18
展开全部
换一个写法试一下,把ipport去掉,connect(("127.0.0.1",8080))
报错显示是值不对,他需要的是个元组,而你给的貌似是一个字符串
报错显示是值不对,他需要的是个元组,而你给的貌似是一个字符串
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询