'How to send a string from java client to python server
I'm sending strings to Python server.py
from client.java
, but there is some error in the string format while receiving into the server. Here are some outputs:
Here is the server code (server.py):
import socket
my_con = True
s = socket.socket()
host = 'localhost'
port = 1223
s.bind((host,port))
s.listen(5)
c,addr = s.accept()
print "got connection from",addr
while my_con:
msg = c.recv(1024)
print msg
if msg == "quit":
c.close()
my_con = false
Client code (client.java):
// File Name GreetingClient.java
import java.net.*;
import java.io.*;
import java.util.*;
public class client {
public static void main(String [] args) {
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
String serverName = args[0];
int port = Integer.parseInt(args[1]);
boolean mycon = true;
try {
System.out.println("Connecting to " + serverName + " on port " + port);
Socket client = new Socket(serverName, port);
System.out.println("Just connected to " + client.getRemoteSocketAddress());
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
while (mycon){
String s_to_send = br.readLine();
System.out.println("sending " + s_to_send);
out.writeUTF(s_to_send);
}
client.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
Solution 1:[1]
Struggled with it as well and wanted to post for knowledge sharing - the recv
function of python returns bytes, what needed to be decoded to UTF-8 string, so the only needed change is msg.decode("utf-8")
when printing.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | idanz |