read/write to java socket in python

hdante hdante at gmail.com
Tue Nov 27 10:29:46 EST 2007


On Nov 27, 1:08 pm, madsornom... at gmail.com wrote:
> Hi all,
>
> I have a problem with reading from a Java server after I have written
> to it - it just hangs. It works fine if I just write to the server and
> not try to write. I have read the HOWTO on sockets - and it states
> that there is a problem (something about flushing), but not what the
> solutions is. Nor do google. Can somebody please help?
>
> A few lines down you can see the example code that sums up the
> problem. Just change the name of the Python HOST-variable.
>
> Thanks
> Mads
>
> This is the client in Python:
> #! /usr/bin/env python
>
> import sys
> from socket import *
>
> PORT = 3122
> HOST = 'app-5'
> SUCCESS = 'Success'
> FAILURE = 'Failure'
>
> s = socket(AF_INET, SOCK_STREAM)
> s.connect((HOST, PORT))
> s.send("Hi Java Server");
> print "Have written, waiting to recieve.."
> print s.recv(1014)
> s.close()
>
> And this the server in Java:
> import java.io.*;
> import java.net.*;
>
> public class Server{
>         public static void main(String args[]){
>
>                 int port = 3122;
>                 int backLog = 50;
>
>                 ServerSocket ss = null;
>                 try{
>
>                         InetAddress localhost =
> InetAddress.getLocalHost();
>                         ss = new ServerSocket(port, backLog,
> localhost);
>                         while(true){
>                                 final Socket client = ss.accept();
>                                 new Thread(){
>                                         public void run(){
>                                                 try{
>
>                                                 InputStream is =
> client.getInputStream();
>                                                 BufferedReader buf =
> new BufferedReader(new InputStreamReader(is));
>                                                 print(buf.readLine());
>
>                                                 PrintWriter out = new
> PrintWriter(client.getOutputStream());
>                                                 out.write("Hi Python
> Client.");
>                                                 out.flush();
>                                                 client.close();
>                                                 }catch(Exception e)
> {print(e);}
>                                         }
>                                 }.start();
>                         }
>                 }catch(Exception e){print(e);}
>         }
>
>         private static void print(Object o){System.out.println(o);}
>
> }

 I don't know, but it's amazing to compare the python client with the
java server.



More information about the Python-list mailing list