I have a client server program where the serverscoket will accept a connection form the client, and the client can receive messages from the server, but not vice versa. The Client:
public class ChatClient { private final String serverName; private final int serverPort; private Socket socket; private OutputStream serverOut; private InputStream serverIn; private BufferedReader bufferedInputStream; //private ArrayList<UserStatusListener> userListners = new ArrayList<UserStatusListener>(); private ChatClient(String serverName, int serverPort) { super(); this.serverName = serverName; this.serverPort = serverPort; } public static void main(String[] args) throws IOException { ChatClient client = new ChatClient("localhost", 8818); // Make sure serverboot is running and listenig first if (! client.connect()) { System.out.println("Connection Failed. Is ServerBoot running/listening?"); }else { System.out.println("Connection succesful"); client.login("guest"); } } private boolean connect() { // TODO Auto-generated method stub try { this.socket = new Socket(serverName, serverPort); // get streams this.serverOut = socket.getOutputStream(); this.serverIn = socket.getInputStream(); this.bufferedInputStream = new BufferedReader(new InputStreamReader(serverIn)); return true; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); return false; } } private void login (String login) throws IOException { // send login to server try { String serverResponse = bufferedInputStream.readLine(); System.out.println("Server response: " + serverResponse); while (bufferedInputStream.readLine() != null) { System.out.println(bufferedInputStream.readLine()); } String send = "Login : " + login; serverOut.write(send.getBytes()); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } Snippets form the server:
try { ServerSocket serverSocket = new ServerSocket(serverPortNumber); while (true) { // Listen for incoming connections and craete connection with accept System.out.println("Waiting for client connection.... on localhost port " + serverPortNumber + ". \n Client connect via netcat localhost 8818"); Socket clientSocket = serverSocket.accept();// returns a client Socket object System.out.println("Conenction established with " + clientSocket); // Each new connection will be handled on a new thread and can run concurrenlty ManageMultipleConnections multipleConnections = new ManageMultipleConnections(this, clientSocket); clientList.add(multipleConnections); multipleConnections.start(); } // get client socket input out streams
clientInput = clientSocket.getInputStream(); clientoutput = clientSocket.getOutputStream(); // write to the client socket
clientoutput.write((message).getBytes()); // attempt to read form the client but we never receive any messages
BufferedReader br = new BufferedReader(new InputStreamReader(clientInput, ENCODING)); String inputLine; String returnMessage; String msg = br.readLine(); System.out.println(br.readLine()); while ((inputLine = br.readLine()) != null && inputLine != "") {....do stuff Any input appreciated.