当前位置: 首页 > 知识库问答 >
问题:

从Java套接字服务器向Python客户端发送数据

和飞翔
2023-03-14

我也试图从Java服务器和Python客户机传输数据。我成功地将数据从客户端传输到服务器,但根本没有接收到数据。

在python客户机上,我有以下内容:(注意,这是在一个单独的线程中运行的)

#mp_log is a custom function for logging, treat it as a print.
def listen_loop():
global client_socket

mp_log("Client socket value:")
mp_log(repr(client_socket))

while True:
    mp_log("Waiting on data from the server. Inside while.")

    if client_socket is None:
        mp_log("Client Socket is null, skipping data check.")
        continue
    data = client_socket.recv(1)
    mp_log("Got some data: " + data)

如果这是成功的工作,输出将是客户端套接字值,等待服务器,然后得到一些数据。然而,它正陷入等待数据的困境。

这意味着套接字显然不是None,它正在等待缓冲区接收?我将接收缓冲区大小设置为1,以查看是否有任何数据通过。以下是我从服务器发送的代码:

// Earlier in the code, to create the writer. 
this.writer = new PrintWriter(this.socket.getOutputStream(),true);

我启用了自动刷新作为测试,以确保数据实际上正在刷新。

public void send(String data) {
    System.out.println("Sending data to this client.");

    this.writer.println(data);
    this.writer.flush();
}

编辑:为使用的两种语言添加套接字创建代码。Java:

public Connection(Socket socket) throws IOException {
    this.socket = socket;
    this.reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));

    this.writer = new PrintWriter(this.socket.getOutputStream(),true);

    this.listenThread = new Thread(this);
    this.listenThread.start();

    // Test message
    send("Test Message " + System.currentTimeMillis());
}

和Python:

global client_socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
threading.Thread(target=listen_loop).start()
client_socket.connect(("localhost", 5000))

共有1个答案

子车俊材
2023-03-14
 `data = client_socket.recv(1)`

尝试通过data=client_socket.recv(1024)来改变这一点。我想我不确定我是否有类似的问题,比如给recv(1)的数字是您的缓冲区,希望能有所帮助

 类似资料:
  • 我有一个关于Java插座的技术问题。 例如,假设我有一个Java Sockets服务器和n个多个客户端。是否可以几乎实时地将数据从服务器发送到任何或所有客户端? 更准确地说: 有哪种监听器可以在Sockets客户端中实现 有人能告诉我什么方法是最好的吗?此外,如果有人有一个代码示例,我也会很高兴。 谢谢

  • 我正试图从套接字服务器(Java)向套接字客户端(Python)发送一个映像,但客户端中接收到的映像大小不正确,无法打开。我不知道我做错了什么。有什么建议吗?

  • 我正在编写一个程序,将数据从服务器连续发送到客户端。在这里,我使用示例的时间戳将其发送给连接的多个客户端。我使用多线程来支持多个客户端。我希望每10秒向客户端发送一次时间。但在我的代码中,客户端在收到第一个数据后停止。如何让客户端连续接收数据。我尝试在客户端添加while循环,但这并不可行。有什么建议吗 以下是示例代码:服务器端: 客户端: 我的输出: 客户端所需输出:

  • 我正在使用网络库和浏览器上的WebSocket实现一个套接字节点服务器。我正在成功使用telnet,但浏览器工作不正常。浏览器成功连接到套接字服务器并发送消息。我的服务器实现了一个事件,并立即触发和事件<代码>关闭,事件在断开连接时执行删除客户端(关闭浏览器,连接松动…)。 我不希望浏览器发送消息,然后断开连接。有人知道问题出在哪里吗? 套接字服务器 客户端(浏览器) 浏览器连接到服务器时的输出

  • 我试图用java实现一个客户端服务器,在这里我读取客户端中的输入并在服务器中执行UperCase,然后返回客户端并打印UperCase。我使用ObjectOutputStream和ObjectInputStream进行读写,但是当我在客户机中键入一个msg时,程序会显示以下错误: Digite uma msg casa java.io.eofexception位于java.io.datainput

  • 问题内容: 我需要从Windows Java服务器向Linux C ++客户端发送一个字符串,反之亦然,但是我编写的代码无法正常工作,我也不知道为什么: *Windows上的 *Java服务器 代码 发送字符串 : *Windows *上的 Java服务器 代码 以接收数据 : *Linux上的 *C ++客户端 代码 发送数据 : *Linux上的 *C ++客户端 代码 以接收数据 : 为什么