read/write to java socket in python

madsornomads at gmail.com madsornomads at gmail.com
Tue Nov 27 16:08:04 CET 2007


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);}
}




More information about the Python-list mailing list