powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Поделитесь кто может!
10 сообщений из 10, страница 1 из 1
Поделитесь кто может!
    #34503519
light_ret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Я вот уже какой день протираю штаны возле компа, а понять как написать графическое клиен-серверное приложение (использую стандартные графические компоненты IDE NetBeans) я не могу.
А главной проблеммой является то, что не понятно, в какой момент сокеты определять, чтоб можно было доступится к входным потокам.
Мож кто сталкивался с написанием таких прожек, буду просто счастлив, если кто поделится, или подскажет как это сделать!!!!!!!!!!!!!!!!!!!!
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34503585
DIMA11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот класс ловит новые подключения и отправляет их на обслуживание
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
 public   class  Server  extends  Thread
{
     public   void  run() 
    {
         try 
        {
            Properties props =  new  Properties();
            FileInputStream in
                    =  new  FileInputStream("database.properties");
            props.load(in);
            in.close();

            String port = props.getProperty("socket.port");
             int  i =  1 ;
            ServerSocket s =  new  ServerSocket(Integer.parseInt(port));
             for  (;;)
            {
                Socket incoming = s.accept( );
                
                /*JOptionPane.showMessageDialog(null,
				"Подключение " + i, "Новое подключение",
				JOptionPane.INFORMATION_MESSAGE);*/

                Thread t =  new  ThreadedHandler(incoming);
                t.start();
                i++;
            } 
                        
        }
         catch  (Exception e)
        {
            JOptionPane.showMessageDialog( null ,
				e.getMessage(), "Ошибка прослушивания порта",
				JOptionPane.ERROR_MESSAGE);
        }
    }
}

а этот класс обслуживает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
 class  ThreadedHandler  extends  Thread
{
    public  ThreadedHandler(Socket i)
   {
       incoming = i;
   }

    public   void  run()
   {
        try 
       {
           BufferedReader in =  new  BufferedReader
             ( new  InputStreamReader(incoming.getInputStream()));
           PrintWriter out =  new  PrintWriter
                 (incoming.getOutputStream(), true /* autoFlush */);

            boolean  done = false;

            while  (!done)
           {
               String line = in.readLine();

                if  (line !=  null )
               {
                   ...
                   читаем запрос и формируем ответ тут
                   ...
               }
           }
           incoming.close();

       }
        catch  (Exception e)
       {
           JOptionPane.showMessageDialog( null ,
                    e.getMessage(), "Ошибка обмена данными",
                    JOptionPane.ERROR_MESSAGE);
       }
   }
     private  Socket incoming;
}

ну вроде как-то так :)
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34505611
light_ret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)
Спасибо большое за пример!
Только я еще хотел уточнить, какие библиотеки надо подключить, так как с теми, что я подключил ( import java.io.*; import java.net.*;)он не воспринимает
Properties props = new Properties(); //cannot find symbol
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34505741
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
light_ret:)
Спасибо большое за пример!
Только я еще хотел уточнить, какие библиотеки надо подключить, так как с теми, что я подключил ( import java.io.*; import java.net.*;)он не воспринимает
Properties props = new Properties(); //cannot find symbol

В netbeans в окне редактирования нажми Ctrl+Shift+F
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34505753
mozheyko_d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mozheyko_d light_ret:)
Спасибо большое за пример!
Только я еще хотел уточнить, какие библиотеки надо подключить, так как с теми, что я подключил ( import java.io.*; import java.net.*;)он не воспринимает
Properties props = new Properties(); //cannot find symbol

В netbeans в окне редактирования нажми Ctrl+Shift+F

тьфу, наврал, Alt +Shift+F , хотя предыдущая комбинация тоже полезная.
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34506066
light_ret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
light_ret:)
Properties props = new Properties(); //cannot find symbol
Спасибо! Относительно данной строки я разобрался!! Сервер у меня заработал! :)
Только вот есть вопрос теперь относительно клиента.
Я для теста попробовал конэктиться своим клиентом (консольным), но мне выдало ошибку:
Exception in thread "main" java.lang.UnsupportedClassVersionError: test_server/M
ain (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)


Привожу код своего клиента:
public static void main(String[] args) throws IOException {

Socket kkSocket = null;
PrintWriter out = null;
BufferedReader in = null;

try {
kkSocket = new Socket("noname", 4444);
out = new PrintWriter(kkSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: taranis.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: taranis.");
System.exit(1);
}

BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;

while ((fromServer = in.readLine()) != null) {
System.out.println(fromServer);
if (fromServer.equals("Bye."))
break;

fromUser = "Client: " + stdIn.readLine();
if (fromUser != null) {
System.out.println(fromUser);
out.println(fromUser);
}
}

out.close();
in.close();
stdIn.close();
kkSocket.close();
}
}

Мне кажеться, что ошибка где-то видна, или я совсем не то что-то делаю.
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34506291
DIMA11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Держи пример простенького клиента :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
 import  javax.swing.*;
 import  java.awt.*;
 import  java.awt.event.ActionListener;
 import  java.awt.event.ActionEvent;
 import  java.io.BufferedReader;
 import  java.io.InputStreamReader;
 import  java.io.PrintWriter;
 import  java.net.Socket;
 import  java.net.ServerSocket;

 public   class  SocketClientFrame  extends  JFrame
{
     public  SocketClientFrame()
    {
        setTitle("Сокет клиент");
        Container contentPane = getContentPane();
        Toolkit kit = Toolkit.getDefaultToolkit();
        Dimension screenSize = kit.getScreenSize();
         int  screenHeight = screenSize.height;
         int  screenWidth = screenSize.width;
        setLocation((screenWidth - WIDTH) /  2 , (screenHeight - HEIGHT) /  2 );
        setSize(WIDTH, HEIGHT);

         final  JTextArea textArea =  new  JTextArea( 7 ,  20 );
        JScrollPane scrollPane =  new  JScrollPane(textArea) ;
        textArea.setLineWrap(true);
        contentPane.add(scrollPane, BorderLayout.NORTH);

        JPanel bPan =  new  JPanel();
        contentPane.add(bPan, BorderLayout.SOUTH);

        JButton connBtn =  new  JButton("Подключиться");
        bPan.add(connBtn);
        connBtn.addActionListener( new 
                ActionListener()
                {
                     public   void  actionPerformed(ActionEvent evt)
                    {
                         try 
                        {
                            socket =  new  Socket("127.0.0.1",  8189 ); //Введи свое!!!

                            in =  new  BufferedReader
                                ( new  InputStreamReader(socket.getInputStream()));
                            out =  new  PrintWriter
                                (socket.getOutputStream(), true /* autoFlush */);
                        }
                         catch (Exception e)
                        {
                            JOptionPane.showMessageDialog( null ,
                                e.getMessage(), "Ошибка подключения к сокету!",
                                JOptionPane.ERROR_MESSAGE);
                        }
                    }
                });

        JButton sendBtn =  new  JButton("Отправить");
        bPan.add(sendBtn);
        sendBtn.addActionListener( new 
                ActionListener()
                {
                     public   void  actionPerformed(ActionEvent evt)
                    {
                        String text = textArea.getText();
                        out.println(text);
                        textArea.setText("");
                    }
                });

        JButton cnlBtn =  new  JButton("Выход");
        bPan.add(cnlBtn);
        cnlBtn.addActionListener( new 
                ActionListener()
                {
                     public   void  actionPerformed(ActionEvent evt)
                    {
                        System.exit( 0 );
                    }
                });

    }
     private  Socket socket;
     private  PrintWriter out;
     private  BufferedReader in;
     private   static   final   int  WIDTH =  500 ;
     private   static   final   int  HEIGHT =  200 ;

}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 import  javax.swing.*;

 public   class  SocketClient
{
      public   static   void  main(String[] args)
     {
         SocketClientFrame client =  new  SocketClientFrame();
         client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         client.setVisible(true);
     }

}
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34507437
light_ret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima11Держи пример простенького клиента :)
[/src]

БОЛЬШОЕ-БОЛЬШОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!!!
Клиент вообще сказка!!! :)
С консольным сервером работает на ура!
Только вот с сервером оказались проблемы :(
Просто это из-за того, что я не до конца понял ка правильно написать метод
public static void main(String args[]) {}
Я его написал таким образом:

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});


}


Но, по видимому сервер просто не выполняет своих действий.
Подскажите, в чем я ошибся, пожалуйста! :)
Спасибо!!!
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34508546
DIMA11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда рад помочь :) Запускать его надо так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 public   static   void  main(String[] args)
    {
            try 
           {
               Server consolServer =  new  Server();
               consolServer.start();
           }
            catch  (Exception e)
           {
               JOptionPane.showMessageDialog( null ,
                       e.getMessage(), "Ошибка при запуске сервера!",
                       JOptionPane.ERROR_MESSAGE);
           }
    }
...
Рейтинг: 0 / 0
Поделитесь кто может!
    #34514601
light_ret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо за помощ!!!!!!!! :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Поделитесь кто может!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]