Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

IO problem

$
0
0
I'm trying to create a chat program. But I have some problems. Here is my server and client classes:
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;

public class Server {

	public int port;
	public ServerSocket server;
	public ArrayList<Client> connectedUsers;
	public boolean keep;
	
	public Server ( int port ) {
		
		this.port = port;
		openConnection();
		
	}
	
	private void openConnection() {
		
		// Creating server
		try {
			server = new ServerSocket(port);
		    JOptionPane.showMessageDialog(null, "Server created!");
		    connectedUsers = new ArrayList<Client>();
		    keep = true;
		    
		    // Accepting clients
		    while(keep) {
		    	
		    	display("Waiting for connection...");
		    	Socket user = server.accept();
		    	
		    	
		    	display("Someone connected.");
		    	
		    	Client c = new Client(user);
		    	
		    	connectedUsers.add(c);
		    	c.start();
		    }
		    
		    // Closing everything at the end
		    try {
		    	
		    	server.close();
		    	for(int i = 0; i<connectedUsers.size(); i++){
		    		Client tc = connectedUsers.get(i);
		    		try {
		    		    
		    		}catch(Exception e){}
		    	}
		    	
		    }catch(Exception e){
		    	
		    	display("Exception closing the server " + e);
		    	
		    }
		    
		} catch (IOException e) {
			display("Can't create server");
			e.printStackTrace();
		}
		
	}
	
	//Message displayer
	private void display(String message){
		
		JOptionPane.showMessageDialog(null, message);
		
	}

	public static void main(String[] args) {
		
		String port =  JOptionPane.showInputDialog("Enter port number");
		int portNumber = Integer.parseInt(port);

		Server server = new Server(portNumber);
	}
	
	
	// Inner class for each user
	private class Client extends Thread{

		public Socket socket;
		public ObjectInputStream sInput;
		public ObjectOutputStream sOutput;
		public String username;
		
		public Client (Socket s) {
			socket = s;
			
			try{
				
				sInput = new ObjectInputStream(socket.getInputStream());
				sOutput = new ObjectOutputStream(socket.getOutputStream());
				
			    username = (String) sInput.readObject();
			    display(username+" has connected");
				
			}catch(Exception e){}
		}
	}

}

and client:
import java.net.*;
import java.io.*;
import javax.swing.*;

public class Client {

	public String nickname;
	public String server;
	public int port;
	public Socket socket;
	public ObjectInputStream sInput;
	public ObjectOutputStream sOutput;
	public JFrame frame;
	public ClientGUI gui;
	
	public Client () {
		
		nickname = JOptionPane.showInputDialog("Choose a nickname");
		server = JOptionPane.showInputDialog("Enter the server name you want to connect");
		port = Integer.parseInt(JOptionPane.showInputDialog("Enter port"));
		
		try{
			socket = new Socket(server, port);
			JOptionPane.showMessageDialog(null, "Successfully connected to the server");
			
			try {
				sInput  = new ObjectInputStream(socket.getInputStream());
			 	sOutput = new ObjectOutputStream(socket.getOutputStream());
			 
		    }catch (IOException eIO) {
		    	eIO.printStackTrace();
			}
			JOptionPane.showMessageDialog(null, "Successfully created IO part");
		}catch(Exception e){
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "Can't connect to the server");
		}
		
		setFrame();
		
	}
	
	private void setFrame() {
		
		frame = new JFrame(nickname + " - Chatter v1.0");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		gui = new ClientGUI();
		frame.add(gui);
		frame.setSize(600,400);
		frame.setVisible(true);
	}
	
	
	public static void main(String[] args) {
		
		Client client = new Client();

	}

}



I can connect. Messages show that client connected, server messages show that too. But when I want to initialize ObjectStreams in client class, the program stops. I don't know why. What's wrong?

Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>