gpt4 book ai didi

java - 服务器端的Python套接字问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:57:35 24 4
gpt4 key购买 nike

在 python 服务器上,我计划从 java 客户端接收参数,通过神经网络运行它们并将结果发回。这些消息将是转换为字符串的 numpy 数组,用于通信过程。然而,我还没有尝试从客户端传递一些虚拟字符串来调用服务器例程,当我发回一个字符串时,一切都很好。但是,当我在循环内调用 mod.predict(arr) 或不将接收到的数据连接到回复时,服务器不会使用react。有谁知道我该如何完成这件事?

服务器 - Python:

HOST = 'localhost'
PORT = 7777
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(10)

while True:
conn, addr = s.accept()
data = conn.recv(1024)+"\r\n"

pred = mod.predict(arr)

reply = 'Answer..' + pred + data # +'\r\n'

if not data:
break

conn.send(reply)

conn.close()

客户端 - Java:

Socket socket = new Socket("localhost", 7777);
OutputStream out = socket.getOutputStream();
PrintStream ps = new PrintStream(out, true);
ps.println("Hello Python!");

InputStream in = socket.getInputStream();
BufferedReader buff = new BufferedReader(new InputStreamReader(in));

while (buff.ready()) {
System.out.println(buff.readLine());
}

socket.close();

最佳答案

服务器代码:

import socket

sock = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
sock.bind(("localhost", 5000))
sock.listen()

while True:
try:
sock.listen()
conn, addr = sock.accept()
print(conn.recv(1024))
conn.send(b"Hello world from Python")
conn.close()
except:
break

sock.close()

这是正确的,因为 cURL 是这么说的。

➜  ~  curl -v localhost:5000
* Rebuilt URL to: localhost:5000/
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 5000 (#0)
> GET / HTTP/1.1
> Host: localhost:5000
> User-Agent: curl/7.43.0
> Accept: */*
>
* Connection #0 to host localhost left intact
Hello world from Python%

哦,你的客户端代码也是错误的。您需要创建一个套接字,而不是数据报套接字(这就是您所拥有的)。

客户端代码:

import java.net.*;
import java.io.*;

class Main
{
public static void main(String args[]) throws Exception
{
// This constructor creates a streaming socket
Socket socket = new Socket(InetAddress.getByName(null), 5000);
OutputStream out = socket.getOutputStream();
PrintStream ps = new PrintStream(out, true);
ps.println("Hello Python!");

InputStream in = socket.getInputStream();
BufferedReader buff = new BufferedReader(new InputStreamReader(in));

while (buff.ready()) {
System.out.println(buff.readLine());
}

socket.close();
}
}

关于java - 服务器端的Python套接字问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35237277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com