Socket problem: read & write to same socket
I want to establish connection to a server(written by myself in Go language=
), read from socket, and then write into socket.
The connection can be established, and it reads correctly. But after that a=
nd when I want to write to socket, it closes the connection. I used wiresha=
rk to listen to the packets. I saw my program sent a FIN to the server side=
.. So the server receives nothing.
Note that the server side only sends one line into socket.
I later wrote a server in Java and a client in Go. They work fine in both r=
ead and write.
Thanks in advance!
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class DeserializerTester {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Socket s = null;
BufferedReader in = null;
BufferedWriter out = null;
//PrintWriter out = null;
try {
s = new Socket("127.0.0.1", 9999);
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
//out = new PrintWriter(s.getOutputStream(), false);
out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
} catch (UnknownHostException e) {
System.err.println("Unknown host");
System.exit(0);
} catch (IOException e) {
System.err.println("IO error");
System.exit(1);
}
String msg = "";
msg = in.readLine();
System.out.println(msg);
out.write("\"hi, socket\"");
s.close();
}
}