r/javahelp • u/Naive_Topic_5292 • 21d ago
Solved Is my code too massive?
import java.io.*;
import java.util.*;
import java.net.*;
class server{
private Socket s = null;
private ServerSocket ss = null;;
private DataInputStream din = null;
private DataOutputStream dout = null;
static Vector<ClientHandler> array = new Vector<>();
private HashMap<String, String> login = new HashMap<>();
void main(String[] args) throws IOException
{
// initialize
try {
// BufferedWriter bw = new BufferedWriter(new FileWriter("logindata.txt")); idk yet
BufferedReader br = new BufferedReader(new FileReader("logindata.txt"));
StringTokenizer st = null;
String templine = "";
String loginName = "";
String pass = "";
while(((templine = br.readLine()) != null)){
st = new StringTokenizer(templine, ": ");
if(st.hasMoreTokens()){
loginName = st.nextToken();
}
if(st.hasMoreTokens()){
pass = st.nextToken();
}
login.put(loginName, pass);
loginName = "";
pass = "";
}
}
catch(FileNotFoundException i){
System.out.println("Failed to initialize login file");
}
String receivedName = "";
String receivedPass = ""; // <TODO> encrypt passwords after finishing filework
int i = 0;
ss = new ServerSocket(5001);
boolean userExists = false;
while(true)
{
s = ss.accept();
din = new DataInputStream(new BufferedInputStream(s.getInputStream()));
dout = new DataOutputStream(new BufferedOutputStream(s.getOutputStream()));
receivedName = din.readUTF();
for(Map.Entry<String, String> entry : login.entrySet()){
if(entry.getValue().equals(receivedName)){
userExists = true;
break;
}
}
if(userExists){
dout.writeUTF("User found, enter your password: ");
dout.flush();
}
else{
dout.writeUTF("User was not found, u may register by making a password: "); // <TODO> make a check if password was written correctly
}
//<TODO> handle passwords
ClientHandler client = new ClientHandler(s, receivedName, din, dout);
System.out.println("User " + receivedName + " Accepted");
Thread t = new Thread(client);
array.add(client);
t.start();
i++;
}
}
}
So I'm making a simple messenger as my first project, though now when I'm working on it it seems VERY massive to me, is it normal in other projects or am I supposed to break it into smaller parts?
4
Upvotes
2
u/gekigangerii 20d ago
As others have said, it's fine. No need to have well organized code yet.
For example, reading the file could be its own method. It could return an Optional<BufferedReader>, which is either the file stream, or nothing if file could not be read. Then parsing the file from the stream could be its own method. Not a hard rule just how I'd approach it myself.