Hello everyone, I tried in this code to make a binarysearch dictionary in a text file using ArrayList and socket, but I don't know what happen that I can't do this..?
Client code:
ClientHandler:
Client code:
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
import java.util.Arrays;
public class Client {
public static void main(String[] args) {
int N;
Scanner sc=new Scanner(System.in);
Socket cs=null;
BufferedReader bfr=null;
PrintWriter pw=null;
try{
cs=new Socket("localhost",5000) ;
InputStreamReader isr=
new InputStreamReader(cs.getInputStream());
bfr=new BufferedReader(isr);
pw=new PrintWriter(cs.getOutputStream());
System.out.println("S-a setat reteaua");
for(;;){
System.out.print("Se introduce cuvantul: ");
String cuvant=sc.nextLine();
//daca este STOP : se va deconecta
if(cuvant.equals("STOP")) {pw.println(""); pw.flush();break;}
else {pw.println(cuvant); pw.flush();}
//Citim raspuns server:
String textIn=bfr.readLine();
if(textIn==null)break;
System.out.println(textIn);
}//for;;
}catch( IOException e){
e.printStackTrace();
}
System.out.println("Client m-am deconectat !");
}//main
}
Code:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
import java.util.Arrays;
public class Client {
public static void main(String[] args) {
int N;
Scanner sc=new Scanner(System.in);
Socket cs=null;
BufferedReader bfr=null;
PrintWriter pw=null;
try{
cs=new Socket("localhost",5000) ;
InputStreamReader isr=
new InputStreamReader(cs.getInputStream());
bfr=new BufferedReader(isr);
pw=new PrintWriter(cs.getOutputStream());
System.out.println("S-a setat reteaua");
for(;;){
System.out.print("Se introduce cuvantul: ");
String cuvant=sc.nextLine();
//daca este STOP : se va deconecta
if(cuvant.equals("STOP")) {pw.println(""); pw.flush();break;}
else {pw.println(cuvant); pw.flush();}
//Citim raspuns server:
String textIn=bfr.readLine();
if(textIn==null)break;
System.out.println(textIn);
}//for;;
}catch( IOException e){
e.printStackTrace();
}
System.out.println("Client m-am deconectat !");
}//main
}
Code:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Arrays;
import static java.util.Collections.binarySearch;
//Clasa firului de execuție pentru tratarea clientului conectat la server:
class FirClient extends Thread {
private Socket cs;
private BufferedReader bfr;
private PrintWriter pw;
ArrayList<String> listaucvinte;//la creare firului incarcam datele
// din fisier intr-un ArrayList
public FirClient(Socket cs) {
try {
this.cs = cs;
pw = new PrintWriter(cs.getOutputStream());
InputStreamReader isr =
new InputStreamReader(cs.getInputStream());
bfr = new BufferedReader(isr);
//incarcam fisierul cuvinte .txt in ArrayList:
listaucvinte = new ArrayList<String>();
System.out.println("Se copiaza fisier in al");
FileReader f = new FileReader("D://date1.txt");
BufferedReader bf = new BufferedReader(f);
for (; ; ) {
String s = bf.readLine();
if (s == null) break;//s-a terminat fisier
listaucvinte.add(s);
}
listaucvinte.sort(String::compareTo);
bf.close();
f.close();
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
public static int CautareBinara(ArrayList<String> listaucvinte, String cuvant) {
int start = 0;
int sfarsit = (listaucvinte.size()) - 1;
while (start <= sfarsit) {
int mijloc = start + (sfarsit - start) / 2;
if (listaucvinte.get(mijloc).compareTo(cuvant) < 0) {
start = mijloc + 1;
} else if (listaucvinte.get(mijloc).compareTo(cuvant) > 0) {
sfarsit = mijloc - 1;
} else {
return mijloc;
}
}
return -1;
}
public void run() {
try {
for (;;) {
String cuvant = bfr.readLine();
if (cuvant == null) break;
if (cuvant.equals("")) break;
//cautare cuvant in ArrayList:
for (int i = 0; i < listaucvinte.size(); i += 2) {
String crt = listaucvinte.get(i);
int r = CautareBinara(listaucvinte, cuvant);
if (r == -1)
pw.println("Elementul nu s-a gasit!");
else
pw.println("Elementul este prezent la indexul " + cuvant);
pw.flush();
}
}//for;;
}
catch(Exception e){e.printStackTrace();}
}
}