Compare commits
1 Commits
dfdaae163b
...
handshake
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6d3bca136a |
@@ -30,3 +30,10 @@ You will also be able to create a new room.
|
||||
- /joinRoom *roomName*
|
||||
- /leaveRoom
|
||||
- /help
|
||||
|
||||
> [!NOTE]
|
||||
> There are some aliases for the commands:
|
||||
> - /create
|
||||
> - /list
|
||||
> - /join
|
||||
> - /leave
|
||||
@@ -6,8 +6,9 @@ import server.Server;
|
||||
|
||||
public class ChatApp {
|
||||
public static void main(String[] args) throws Exception {
|
||||
Server server = new Server(6665);
|
||||
Client client = new Client(new InetSocketAddress("localhost", 6665));
|
||||
int port = 6665;
|
||||
Server server = new Server(port);
|
||||
Client client = new Client(new InetSocketAddress("localhost", port));
|
||||
|
||||
client.SendCreateRoom("101");
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import java.net.SocketException;
|
||||
import java.util.Objects;
|
||||
import java.util.Scanner;
|
||||
|
||||
import network.protocol.ANSIColor;
|
||||
import network.protocol.packets.*;
|
||||
|
||||
public class Client {
|
||||
@@ -30,6 +31,23 @@ public class Client {
|
||||
|
||||
public Client(InetSocketAddress serverAddress) throws SocketException {
|
||||
this.connexion = new ClientConnexion(new DatagramSocket(), serverAddress);
|
||||
int tries = 0;
|
||||
try {
|
||||
connexion.sendPacket(new HandshakePacket());
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
while(!connexion.connected) {
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
if(tries++ > 5) {
|
||||
System.out.println("Server is not responding");
|
||||
System.exit(1);
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
System.out.println("Enter your pseudo:");
|
||||
String pseudo = scanner.nextLine();
|
||||
@@ -42,14 +60,20 @@ public class Client {
|
||||
if(message.startsWith("/createRoom ")) {
|
||||
String roomName = message.substring(12).trim();
|
||||
SendCreateRoom(roomName);
|
||||
} else if(message.startsWith("/listRooms")) {
|
||||
} else if(message.startsWith("/create ")){
|
||||
String roomName = message.substring(8).trim();
|
||||
SendCreateRoom(roomName);
|
||||
} else if(message.equals("/listRooms") || message.equals("/list")) {
|
||||
RequestRoomList();
|
||||
} else if(message.startsWith("/joinRoom ")) {
|
||||
String roomName = message.substring(10).trim();
|
||||
SendJoinRoom(roomName);
|
||||
} else if(message.startsWith("/leaveRoom")) {
|
||||
} else if(message.startsWith("/join ")){
|
||||
String roomName = message.substring(6).trim();
|
||||
SendJoinRoom(roomName);
|
||||
} else if(message.equals("/leaveRoom") || message.equals("/leave")) {
|
||||
SendLeaveRoom();
|
||||
} else if(message.startsWith("/help")) {
|
||||
} else if(message.equals("/help")) {
|
||||
System.out.println("Available commands:");
|
||||
System.out.println("\t/createRoom <roomName>");
|
||||
System.out.println("\t/listRooms");
|
||||
@@ -58,7 +82,7 @@ public class Client {
|
||||
System.out.println("\t/help");
|
||||
}
|
||||
else {
|
||||
System.out.println("Unknown command");
|
||||
System.out.println(ANSIColor.formatString("&rUnknown command&n"));
|
||||
}
|
||||
} else {
|
||||
SendChatMessage(message);
|
||||
|
||||
@@ -10,21 +10,14 @@ import network.SocketWriter;
|
||||
import network.protocol.ANSIColor;
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
import network.protocol.packets.ChatMessagePacket;
|
||||
import network.protocol.packets.CreateRoomPacket;
|
||||
import network.protocol.packets.JoinRoomPacket;
|
||||
import network.protocol.packets.LeaveRoomPacket;
|
||||
import network.protocol.packets.LoginPacket;
|
||||
import network.protocol.packets.RequestRoomListPacket;
|
||||
import network.protocol.packets.RoomListPacket;
|
||||
import network.protocol.packets.SendChatMessagePacket;
|
||||
import network.protocol.packets.ServerResponsePacket;
|
||||
import network.protocol.packets.*;
|
||||
|
||||
public class ClientConnexion implements PacketVisitor, PacketHandler{
|
||||
|
||||
private final InetSocketAddress serverAddress;
|
||||
private final SocketWriter writer;
|
||||
private final SocketReader reader;
|
||||
protected boolean connected = false;
|
||||
|
||||
public ClientConnexion(DatagramSocket socket, InetSocketAddress serverAddress) {
|
||||
this.serverAddress = serverAddress;
|
||||
@@ -50,13 +43,13 @@ public class ClientConnexion implements PacketVisitor, PacketHandler{
|
||||
public void visitPacket(ChatMessagePacket packet) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String time = packet.getTime().toString();
|
||||
sb.append("&y[");
|
||||
sb.append(time, 11, 19); // We only take the HH:MM:SS part
|
||||
sb.append("]&n");
|
||||
sb.append(" ");
|
||||
sb.append(packet.getChatter());
|
||||
sb.append(" : ");
|
||||
sb.append(packet.getContent()).append("&n"); // make the color back to normal at the end of every message
|
||||
sb.append("&y[")
|
||||
.append(time, 11, 19) // We only take the HH:MM:SS part
|
||||
.append("]&n")
|
||||
.append(" ")
|
||||
.append(packet.getChatter())
|
||||
.append(" : ")
|
||||
.append(packet.getContent()).append("&n"); // make the color back to normal at the end of every message
|
||||
System.out.println(ANSIColor.formatString(sb.toString()));
|
||||
}
|
||||
|
||||
@@ -106,4 +99,8 @@ public class ClientConnexion implements PacketVisitor, PacketHandler{
|
||||
System.out.println(packet.getResponse());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPacket(HandshakePacket packet) {
|
||||
connected = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,6 @@
|
||||
package network.protocol;
|
||||
|
||||
import network.protocol.packets.ChatMessagePacket;
|
||||
import network.protocol.packets.CreateRoomPacket;
|
||||
import network.protocol.packets.JoinRoomPacket;
|
||||
import network.protocol.packets.LeaveRoomPacket;
|
||||
import network.protocol.packets.LoginPacket;
|
||||
import network.protocol.packets.RequestRoomListPacket;
|
||||
import network.protocol.packets.RoomListPacket;
|
||||
import network.protocol.packets.SendChatMessagePacket;
|
||||
import network.protocol.packets.ServerResponsePacket;
|
||||
import network.protocol.packets.*;
|
||||
|
||||
public interface PacketVisitor {
|
||||
|
||||
@@ -25,5 +17,5 @@ public interface PacketVisitor {
|
||||
void visitPacket(RoomListPacket packet);
|
||||
void visitPacket(SendChatMessagePacket packet);
|
||||
void visitPacket(ServerResponsePacket packet);
|
||||
|
||||
void visitPacket(HandshakePacket packet);
|
||||
}
|
||||
|
||||
14
ChatApp/src/network/protocol/packets/HandshakePacket.java
Normal file
14
ChatApp/src/network/protocol/packets/HandshakePacket.java
Normal file
@@ -0,0 +1,14 @@
|
||||
package network.protocol.packets;
|
||||
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
|
||||
public class HandshakePacket extends Packet {
|
||||
public HandshakePacket() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void accept(PacketVisitor packetVisitor) {
|
||||
packetVisitor.visitPacket(this);
|
||||
}
|
||||
}
|
||||
@@ -8,15 +8,7 @@ import java.net.SocketException;
|
||||
import network.SocketWriter;
|
||||
import network.protocol.Packet;
|
||||
import network.protocol.PacketVisitor;
|
||||
import network.protocol.packets.ChatMessagePacket;
|
||||
import network.protocol.packets.CreateRoomPacket;
|
||||
import network.protocol.packets.JoinRoomPacket;
|
||||
import network.protocol.packets.LeaveRoomPacket;
|
||||
import network.protocol.packets.LoginPacket;
|
||||
import network.protocol.packets.RequestRoomListPacket;
|
||||
import network.protocol.packets.RoomListPacket;
|
||||
import network.protocol.packets.SendChatMessagePacket;
|
||||
import network.protocol.packets.ServerResponsePacket;
|
||||
import network.protocol.packets.*;
|
||||
import network.protocol.packets.ServerResponsePacket.Response;
|
||||
|
||||
public class ServerConnexion implements PacketVisitor {
|
||||
@@ -118,4 +110,10 @@ public class ServerConnexion implements PacketVisitor {
|
||||
throw new UnsupportedOperationException("Unimplemented method 'visitPacket'");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPacket(HandshakePacket packet) {
|
||||
System.out.println("[Server] Handshake received from " + clientAddress);
|
||||
sendPacket(new HandshakePacket());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user