gpt4 book ai didi

套接字中的 Java 客户端

转载 作者:行者123 更新时间:2023-12-03 11:50:21 25 4
gpt4 key购买 nike

我一直在寻找一种使用 java 连接到用 Python 创建的服务器的方法。
谁能告诉我如何连接java以及如何发送字符串?建议它也适用于Android
我在 python 中的服务器:

import socket, time

soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
soc.bind(("160.07.08.49", 6784))

soc.listen(5)
(client, (ipNum, portNum)) = soc.accept()

while True:
print(client.recv(1024))
time.sleep(0.5)
我的 Java 客户端:
        try {
Socket socket = new Socket("160.07.08.49", 6784);

PrintWriter printWriter = new PrintWriter(socket.getOutputStream());
printWriter.write("Hello from java");
printWriter.flush();
printWriter.close();
}catch (Exception e) {e.printStackTrace();}
当Java客户端连接时,我从python得到一个错误
    print(soc.recv(20))
A request to send or receive data was disallowed because the socket is not connected and (when sending on a datagram socket using a sendto call) no address was supplied

最佳答案

Python 回显服务器:

import socket

HOST = 'localhost'
PORT = 6784

while True:
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)
Java客户端:
import java.io.*;
import java.net.Socket;

public class JavaClient {

public static void main(String [] args) {
String serverName = "localhost";
int port = 6784;

try {
Socket client = new Socket(serverName, port);

OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);

out.writeUTF("Hello from " + client.getLocalSocketAddress());
InputStream inFromServer = client.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);

System.out.println("Server says " + in.readUTF());
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
最大的不同是我在做 localhostlocalhost .如果您需要在 localhost 之外使用 Python 服务器,请更改 bind行至:
soc.bind(("0.0.0.0", 6784))
这样服务器就会监听所有可用的接口(interface)。然后让您的 Java 客户端连接到服务器的外部 IP。

关于套接字中的 Java 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65222754/

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