Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MainSocket {
- public static void main(String[] args) throws IOException {
- HashMap<String,SecondSocket> hashMap = new HashMap();
- ServerSocket serverSocket = new ServerSocket(5555);
- BufferedReader bufferedReader = null;
- PrintWriter printWriter = null;
- String clientKey = null;
- while(true){
- System.out.println("Ожидание нового подключения...");
- Socket socket = serverSocket.accept();
- System.out.println("Старт");
- try
- {
- printWriter = new PrintWriter(socket.getOutputStream(),true);
- bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), Charset.forName("cp1251")));
- clientKey = bufferedReader.readLine();
- System.out.println("key ot klienta"+clientKey);
- }catch (Exception e){}
- //Когда есть новое подключение запускаю новый поток для работы с ним
- if(hashMap.size()!=0){
- if(hashMap.get(clientKey)!=null){
- SecondSocket mySocketThread = hashMap.get(clientKey);
- mySocketThread.setSocket(socket);
- mySocketThread.setBufferedReader(bufferedReader);
- mySocketThread.setPrintWriter(printWriter);
- printWriter.println("ваш поток найден");
- }else{
- printWriter.println("для вас создан новый поток");
- SecondSocket mySocketThread = new SecondSocket(socket,bufferedReader,printWriter);
- hashMap.put(clientKey,mySocketThread);
- mySocketThread.start();
- }
- }else{
- printWriter.println("для вас создан новый поток");
- SecondSocket mySocketThread = new SecondSocket(socket,bufferedReader,printWriter);
- hashMap.put(clientKey, mySocketThread);
- mySocketThread.start();
- }
- System.out.println("OBSHEE CHISLO POTOKOV : "+hashMap.size());
- }
- }
- }
- class SecondSocket extends Thread{
- String connectionUrl = "jdbc:sqlserver://127.0.0.1;databaseName=mydb;user=myname;password=pass";
- Connection connection = null;
- CallableStatement cstmt = null;
- String userId = null;
- String xml = null;
- Document document = null;
- Elements xmlTag = null;
- Element e = null;
- BufferedReader bufferedReader = null;
- PrintWriter printWriter = null;
- Socket socket = null;
- public SecondSocket(Socket socket,BufferedReader bufferedReader,PrintWriter printWriter){
- this.socket = socket;
- this.bufferedReader = bufferedReader;
- this.printWriter = printWriter;
- try {
- connection = DriverManager.getConnection(connectionUrl);
- }catch(Exception e){
- try {
- connection.rollback();
- } catch (SQLException e1) {
- }
- }
- try {
- xml = bufferedReader.readLine();
- System.out.println(xml);
- } catch (IOException e1) {
- }
- try {
- cstmt = connection.prepareCall("{call xml_parser(?,?)}");
- cstmt.setString(1, xml);
- cstmt.registerOutParameter(2, Types.VARCHAR);
- cstmt.execute();
- document = Jsoup.parse(cstmt.getString(2));
- xmlTag = document.getElementsByTag("codeid");
- try{
- e = xmlTag.get(0);
- userId = e.text();
- }catch (Exception e){}
- } catch (Exception e) {
- }
- }
- @Override
- public void run() {
- while(true){
- while(socket!=null){
- if(userId!=null){
- try {
- cstmt = connection.prepareCall("{call xml_parser_new(?,?)}");
- cstmt.setInt(1, Integer.valueOf(userId));
- cstmt.registerOutParameter(2, Types.INTEGER);
- cstmt.execute();
- printWriter.println(cstmt.getString(2));
- } catch (Exception e) {
- e.printStackTrace();
- }
- try{
- while ((xml = bufferedReader.readLine()) != null) {
- System.out.println(xml);
- cstmt.execute();
- if (cstmt.getString(2).equals("1")) {
- printWriter.println(cstmt.getString(2));
- }else {
- printWriter.println("0");
- }
- }
- }catch(IOException e){
- } catch (SQLException e1) {
- } finally {
- try {
- cstmt.close();
- socket.close();
- socket = null;
- xml = "";
- e = null;
- xmlTag = null;
- document = null;
- bufferedReader.close();
- bufferedReader = null;
- printWriter.close();
- printWriter = null;
- System.out.println("сработал finally block");
- } catch (SQLException e1) {
- } catch (IOException e1) {
- }
- }
- }
- System.out.println("сработал конечный while");
- }
- System.out.println("Работает while true");
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e1) {
- }
- }
- }
- public BufferedReader getBufferedReader() {
- return bufferedReader;
- }
- public void setBufferedReader(BufferedReader bufferedReader) {
- this.bufferedReader = bufferedReader;
- }
- public PrintWriter getPrintWriter() {
- return printWriter;
- }
- public void setPrintWriter(PrintWriter printWriter) {
- this.printWriter = printWriter;
- }
- public Socket getSocket() {
- return socket;
- }
- public void setSocket(Socket socket) {
- this.socket = socket;
- }
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (!(o instanceof SecondSocket)) return false;
- SecondSocket that = (SecondSocket) o;
- if (bufferedReader != null ? !bufferedReader.equals(that.bufferedReader) : that.bufferedReader != null)
- return false;
- if (connection != null ? !connection.equals(that.connection) : that.connection != null) return false;
- if (connectionUrl != null ? !connectionUrl.equals(that.connectionUrl) : that.connectionUrl != null)
- return false;
- if (cstmt != null ? !cstmt.equals(that.cstmt) : that.cstmt != null) return false;
- if (document != null ? !document.equals(that.document) : that.document != null) return false;
- if (e != null ? !e.equals(that.e) : that.e != null) return false;
- if (xml != null ? !xml.equals(that.xml) : that.xml != null) return false;
- if (printWriter != null ? !printWriter.equals(that.printWriter) : that.printWriter != null) return false;
- if (socket != null ? !socket.equals(that.socket) : that.socket != null) return false;
- if (userId != null ? !userId.equals(that.userId) : that.userId != null) return false;
- if (xmlTag != null ? !xmlTag.equals(that.xmlTag) : that.xmlTag != null) return false;
- return true;
- }
- @Override
- public int hashCode() {
- int result = connectionUrl != null ? connectionUrl.hashCode() : 0;
- result = 31 * result + (connection != null ? connection.hashCode() : 0);
- result = 31 * result + (cstmt != null ? cstmt.hashCode() : 0);
- result = 31 * result + (userId != null ? userId.hashCode() : 0);
- result = 31 * result + (xml != null ? xml.hashCode() : 0);
- result = 31 * result + (document != null ? document.hashCode() : 0);
- result = 31 * result + (xmlTag != null ? xmlTag.hashCode() : 0);
- result = 31 * result + (e != null ? e.hashCode() : 0);
- result = 31 * result + (bufferedReader != null ? bufferedReader.hashCode() : 0);
- result = 31 * result + (printWriter != null ? printWriter.hashCode() : 0);
- result = 31 * result + (socket != null ? socket.hashCode() : 0);
- return result;
- }
- }
Add Comment
Please, Sign In to add comment