python客户端和java服务器之间的通信
我的目标是将一条消息从python套接字发送到java套接字。我确实注意到了上面提到的资源。然而,我很难让Python客户机与Java服务器对话。主要是因为python中的(行尾)与java中的不同 假设我从python客户端写入:消息1:abcd消息2:efgh消息3:q(退出) 在java服务器上:我收到消息1:abcdefghq,后面跟着异常,因为python客户机已经从一端关闭了套接字 谁能为java和python之间的一致性对话提出一个解决方案 我使用的参考文献: 更新:我忘了添加,我正在使用TCP 我的JAVA代码如下:(服务器套接字) 我的PYTHON代码:(客户端套接字)python客户端和java服务器之间的通信,java,python,sockets,Java,Python,Sockets,我的目标是将一条消息从python套接字发送到java套接字。我确实注意到了上面提到的资源。然而,我很难让Python客户机与Java服务器对话。主要是因为python中的(行尾)与java中的不同 假设我从python客户端写入:消息1:abcd消息2:efgh消息3:q(退出) 在java服务器上:我收到消息1:abcdefghq,后面跟着异常,因为python客户机已经从一端关闭了套接字 谁能为java和python之间的一致性对话提出一个解决方案 我使用的参考文献: 更新:我忘了添加,我
client\u socket=socket.socket(socket.AF\u INET,socket.SOCK\u流)
client_socket.connect((“localhost”,5000))
而1:
数据=原始输入(“发送(键入q或q退出):”)
如果(数据“Q”和数据“Q”):
客户端\u套接字发送(数据)
其他:
客户端\u套接字发送(数据)
client_socket.close()
打破
输出::
在PYTHON控制台(客户端)上:
发送(键入q或q退出):abcd(按ENTER键)
发送(键入q或q退出):efgh(按ENTER键)
发送(键入q或q退出):q(按ENTER键)
在JAVA控制台(服务器)上:
TCPServer正在端口5000上等待客户端
客户端/127.0.0.1:1335已连接
收到:abcdefghq将
\n
附加到数据的末尾
:
client_socket.send(data + '\n')
是..您需要在python客户端中的字符串末尾添加'\n'。。。。。 这里有一个例子。。。 PythonTCPCLient.py ` ` 下面是java代码: JavaServer.java ` `
参考资料:以下是相同的工作代码: Jserver.java
import java.io.*;
import java.net.*;
import java.util.*;
public class Jserver{
public static void main(String args[]) throws IOException{
ServerSocket s=new ServerSocket(5000);
try{
Socket ss=s.accept();
PrintWriter pw = new PrintWriter(ss.getOutputStream(),true);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br1 = new BufferedReader(new InputStreamReader(ss.getInputStream()));
//String str[20];
//String msg[20];
System.out.println("Client connected..");
while(true)
{
System.out.println("Enter command:");
pw.println(br.readLine());
//System.out.println(br1.readLine());
}
}
finally{}
}
}
Client.py
import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 5000 # Reserve a port for your service.
s.connect((host, port))
while 1:
print s.recv(5000)
s.send("message processed.."+'\n')
s.close
我知道已经很晚了,但特别是对于您的情况,我建议您使用RabbitMQ RPC调用。他们的网站上有很多Python、Java和其他语言的示例:
EOL是EOL(“\n”)-我想您需要发布创建错误的最低限度的代码。我忘了添加,我正在处理TCP。给您一个建议:String fromclient;那里的分配效率较低。在此处分配:String fromclient=infomclient.readLine();除此之外,代码真的很好。@Amandepchugh如果有任何答案可以解决你的问题,请接受它。你救了我一天!
#!/usr/bin/env python
import socket
HOST = "localhost"
PORT = 8080
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
sock.sendall("Hello\n")
data = sock.recv(1024)
print "1)", data
if ( data == "olleH\n" ):
sock.sendall("Bye\n")
data = sock.recv(1024)
print "2)", data
if (data == "eyB}\n"):
sock.close()
print "Socket closed"
import java.io.*;
import java.net.*;
class JavaServer {
public static void main(String args[]) throws Exception {
String fromClient;
String toClient;
ServerSocket server = new ServerSocket(8080);
System.out.println("wait for connection on port 8080");
boolean run = true;
while(run) {
Socket client = server.accept();
System.out.println("got connection on port 8080");
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream(),true);
fromClient = in.readLine();
System.out.println("received: " + fromClient);
if(fromClient.equals("Hello")) {
toClient = "olleH";
System.out.println("send olleH");
out.println(toClient);
fromClient = in.readLine();
System.out.println("received: " + fromClient);
if(fromClient.equals("Bye")) {
toClient = "eyB";
System.out.println("send eyB");
out.println(toClient);
client.close();
run = false;
System.out.println("socket closed");
}
}
}
System.exit(0);
}
}
import java.io.*;
import java.net.*;
import java.util.*;
public class Jserver{
public static void main(String args[]) throws IOException{
ServerSocket s=new ServerSocket(5000);
try{
Socket ss=s.accept();
PrintWriter pw = new PrintWriter(ss.getOutputStream(),true);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br1 = new BufferedReader(new InputStreamReader(ss.getInputStream()));
//String str[20];
//String msg[20];
System.out.println("Client connected..");
while(true)
{
System.out.println("Enter command:");
pw.println(br.readLine());
//System.out.println(br1.readLine());
}
}
finally{}
}
}
import socket # Import socket module
s = socket.socket() # Create a socket object
host = socket.gethostname() # Get local machine name
port = 5000 # Reserve a port for your service.
s.connect((host, port))
while 1:
print s.recv(5000)
s.send("message processed.."+'\n')
s.close