Hallo,
Ich bastle gerade an oben beschriebener App herum. Folgendes ist der aktuelle Code
Wenn ich die beiden main Methoden (erst die vom Server, dann vom Controller) ausführe wird allerdings nichts in die DB eingegeben, weiß jemand woran das liegen könnte?
Ich bastle gerade an oben beschriebener App herum. Folgendes ist der aktuelle Code
Java:
import java.io.*;
import java.net.Socket;
public class Controller {
private final String serverIP;
private final int serverPort;
public Controller(String ip, int port){
serverIP = ip;
serverPort = port;
}
public void sendRequest(Request request){
try {
Socket clientSocket = new Socket(this.serverIP, this.serverPort);
ObjectOutputStream out = new ObjectOutputStream(clientSocket.getOutputStream());
//ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(clientSocket.getInputStream()));
out.writeObject(request);
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[]args){
Controller controller = new Controller("localhost",6666);
Request message = new Request("message");
message.setAttribute("sender","1");
message.setAttribute("receiver","2");
message.setAttribute("id","default");
message.setAttribute("message","hello friend!");
controller.sendRequest(message);
Request quit = new Request("quit");
controller.sendRequest(quit);
}
}
Java:
import java.io.*;
import java.net.*;
import java.sql.*;
public class Server {
private final int port;
public Server (int port){
this.port = port;
}
public void addMessage(Request request){
try {
if (!request.getType().equals("message")){
throw new RuntimeException("Error, Request Object is not of type message.");
}
Connection connection = DriverManager.
getConnection("jdbc:mysql://localhost:3306/Whatsapp","david","21da04ma");
PreparedStatement stmt = connection.prepareStatement("insert into messages (?,?,?,?)");
stmt.setString(1,"default");
stmt.setString(2,request.getAttribute("sender"));
stmt.setString(3,request.getAttribute("receiver"));
stmt.setString(4,request.getAttribute("message"));
int i = stmt.executeUpdate();
System.out.println(i + " rows inserted!");
connection.close();
}
catch (Exception e){
e.printStackTrace();
}
}
public void addUser(Request request){
try {
if (!request.getType().equals("adduser")){
throw new RuntimeException("Error, Request Object is not of type adduser");
}
Connection connection = DriverManager.
getConnection("jdbc:mysql://localhost:3306/Whatsapp","nichtdasrichtigepw","123");
PreparedStatement stmt = connection.prepareStatement("insert into users (?,?,?)");
stmt.setString(1,"default");
stmt.setString(2,request.getAttribute("firstname"));
stmt.setString(3,request.getAttribute("lastname"));
int i = stmt.executeUpdate();
System.out.println(i + " rows inserted!");
connection.close();
}
catch (Exception e){
e.printStackTrace();
}
}
public void start(){
boolean running = true;
while (running) {
try {
ServerSocket serverSocket = new ServerSocket(this.port);
Socket clientSocket = serverSocket.accept();
ObjectOutputStream out = new ObjectOutputStream(clientSocket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(clientSocket.getInputStream()));
Request request = (Request) in.readObject();
String type = request.getType();
switch (type) {
case "message":
this.addMessage(request);
System.out.println("addMessage(request) was called.");
break;
case "adduser":
this.addUser(request);
break;
case "quit":
running = false;
break;
default:
break;
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args){
Server server = new Server(6666);
server.start();
}
}
Java:
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
public class Request implements Serializable {
private Map<String,String> data = new HashMap<>();
private final String type;
String getType(){
return this.type;
}
public Request(String type){
this.type = type;
}
public void setAttribute(String key, String value){
data.put(key,value);
}
public String getAttribute(String key){
return data.get(key);
}
}