Преглед на файлове

Created a basic server and a test user

jancoow преди 10 години
родител
ревизия
187e67e636

+ 16 - 0
src/client/control/Control.java

@@ -0,0 +1,16 @@
+package client.control;
+
+import client.model.Model;
+import client.view.View;
+
+public class Control {
+	
+	Model m;
+	View v;
+	
+	public Control(Model m, View v)
+	{
+		this.m = m;
+		this.v = v;
+	}
+}

+ 13 - 0
src/client/model/Model.java

@@ -0,0 +1,13 @@
+package client.model;
+
+import client.view.View;
+
+public class Model {
+	
+	View v;
+	
+	public Model(View v)
+	{
+		this.v = v;
+	}
+}

+ 10 - 0
src/client/view/Main.java

@@ -0,0 +1,10 @@
+package client.view;
+
+public class Main {
+
+	public static void main(String[] args) {
+		new Window();
+		//Comment
+	}
+
+}

+ 23 - 0
src/client/view/View.java

@@ -0,0 +1,23 @@
+package client.view;
+
+import java.awt.Color;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+
+import javax.swing.JPanel;
+
+public class View extends JPanel {
+
+	public View()
+	{
+		super();
+		setBackground(Color.WHITE);
+	}
+	
+	@Override
+	public void paintComponent(Graphics g)
+	{
+		super.paintComponent(g);
+		Graphics2D g2d = (Graphics2D) g;
+	}
+}

+ 24 - 0
src/client/view/Window.java

@@ -0,0 +1,24 @@
+package client.view;
+
+import javax.swing.JFrame;
+
+import client.control.Control;
+import client.model.Model;
+
+public class Window extends JFrame {
+	
+	public Window()
+	{
+		super("JK Chat");
+		setDefaultCloseOperation(3);
+		setSize(400, 600);
+		
+		View v = new View();
+		Model m = new Model(v);
+		Control c = new Control(m, v);
+		
+		setContentPane(v);
+		
+		setVisible(true);
+	}
+}

+ 54 - 0
src/clientest/Client.java

@@ -0,0 +1,54 @@
+package clientest;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+public class Client {
+	public Client(){
+		try {
+			Socket client = new Socket("localhost", 5999);
+			Thread test = new Thread(new Runnable() {
+				@Override
+				public void run() {
+					DataInputStream input;
+					try {
+						input = new DataInputStream(client.getInputStream());
+						while(true){
+							try {
+								System.out.println(input.readUTF());
+							} catch (IOException e) {
+								// TODO Auto-generated catch block
+								e.printStackTrace();
+							}
+						}
+					} catch (IOException e) {
+						// TODO Auto-generated catch block
+						e.printStackTrace();
+					}
+
+				}
+			});
+			test.start();
+			while(true){
+				DataOutputStream output = new DataOutputStream(client.getOutputStream());
+				output.writeUTF("test123");
+				try {
+					Thread.sleep(1000);
+				} catch (InterruptedException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			}
+		} catch (UnknownHostException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+	}
+}

+ 9 - 0
src/clientest/Main.java

@@ -0,0 +1,9 @@
+package clientest;
+
+public class Main {
+
+	public static void main(String[] args) {
+		new Client();
+	}
+
+}

+ 7 - 0
src/server/Log.java

@@ -0,0 +1,7 @@
+package server;
+
+public class Log {
+	public static void writeLog(String logmessage){
+		
+	}
+}

+ 7 - 0
src/server/Main.java

@@ -0,0 +1,7 @@
+package server;
+
+public class Main {
+	public static void main(String[] args){
+		new Server(5999);
+	}
+}

+ 25 - 0
src/server/Message.java

@@ -0,0 +1,25 @@
+package server;
+
+public class Message {
+	private String message;
+	private User user;
+	private long time;
+	
+	public Message(String message, User user){
+		this.message = filterMessage(message);
+		this.user = user;
+		//TODO No time-zone conversation yet
+		time = System.currentTimeMillis();
+	}
+	
+	private String filterMessage(String message){
+		//TODO Filter om scheldworden etc. eruit te halen
+		return message;
+	}
+
+	public User getUser() {
+		return user;
+	}
+	
+	
+}

+ 39 - 0
src/server/Server.java

@@ -0,0 +1,39 @@
+package server;
+
+import java.awt.Color;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.ArrayList;
+
+public class Server {
+	private ArrayList<User> users;
+	private ArrayList<Message> messages;
+	
+	public Server(int port){
+		users = new ArrayList<User>();
+		messages = new ArrayList<Message>();
+		try {
+			ServerSocket serverSocket = new ServerSocket(port);
+			while(true){
+				System.out.println("Waiting for clients...");
+				Socket client = serverSocket.accept();
+				//TODO: Check in banned list and read username and color from reply message
+				users.add(new User("test", Color.red, client, this));
+				System.out.println("New client connected: " + client.getRemoteSocketAddress());
+				System.out.println("Total users connected: " + users.size());
+			}
+		} catch (IOException e) {
+			System.out.println("Something went wrong, abort.");
+			e.printStackTrace();
+		}		
+	}
+	
+	public void addMessage(Message message){
+		messages.add(message);
+		for(User u:users){
+			if(message.getUser() != u)
+				u.sendMessage(message);
+		}
+	}
+}

+ 47 - 0
src/server/User.java

@@ -0,0 +1,47 @@
+package server;
+
+import java.awt.Color;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.Socket;
+
+public class User {
+	private String username;
+	private Color color;
+	private Socket client;
+	
+	public User(String username, Color color, Socket client, Server server){
+		this.username = username;
+		this.color = color;
+		this.client = client;
+		Thread receivethread = new Thread(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					DataInputStream in = new DataInputStream(client.getInputStream());
+					while(true){
+						in.readUTF();
+						//TODO: receive message from user according our protocol
+						server.addMessage(new Message("messageINPUT", User.this));
+					}
+				} catch (IOException e) {
+					e.printStackTrace();
+				}					
+			}
+		});
+		receivethread.start();
+	}
+	
+	public void sendMessage(Message message){
+		try {
+			DataOutputStream out = new DataOutputStream(client.getOutputStream());
+			out.writeUTF("messageOUT");
+			//TODO: send message to user according our protocol
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+		
+	}
+	
+}