Недавно я запустил проект, где есть необходимость в онлайн -коммуникации. Я давно не писал код, и я не знаком с ним. Поэтому я сначала написал демонстрацию, практиковал ее и поделился ею на сетевой платформе Wulin, чтобы сделать запись, чтобы ее можно было использовать со всеми.
Позвольте мне сначала рассказать вам шаги реализации:
1. Используйте компонент AWT и сокет, чтобы реализовать простой единый клиент для постоянной отправки сообщений на сервер;
2. В сочетании с потоками реализуйте мульти-клиент подключение к серверу для отправки сообщений;
3. Реализовать серверы для пересылки клиентов для всех клиентов и одновременно отображать их на клиенте;
4. Измените интерфейс окна, сгенерированный компонентом AWT на интерфейс, отображаемый Front-End JSP или HTML, и измените клиента, реализованный Java Socket на реализацию технологии фронтальной технологии.
Здесь мы сначала реализуем простую функцию первого шага, сложность:
1. Я никогда не использовал компонент AWT и никогда не использовал события прослушивания, связанные с Java;
2. Я не использовал розетки в течение длительных периодов времени для взаимодействия между клиентом и сервером, и я действительно не разработал структуру CSS.
Код для реализации функции выглядит следующим образом:
Клиент:
пакет чат.chat; импортировать java.awt.borderlayout; импортировать java.awt.frame; импортировать java.awt.textarea; импортировать java.awt.textfield; импортировать java.awt.event.actionevent; импортировать java.awt.event.actionlistener; импортировать java.awt.event.windowadapter; импортировать java.awt.event.windowevent; импортировать java.io.dataoutputstream; импортировать java.io.ioexception; импортировать java.net.socket; Импорт java.net.unknownhostexception; /** * Online chat client 1. Generate graphical window interface outline 2. Add a close event to the outline 3. Add an input area and a content display area to the outline 4. Add a carriage return event for the input area* 5. Establish a server connection and send data* * @author tuzongxun123 * */ public class ChatClient extends Frame { // User input area private TextField tfTxt = new TextField(); // Содержимое область отображения private textarea taste = new Textarea (); Приватный сокет = null; // выходной сигнал данных public static void main (string [] args) {new ChatClient (). Launcframe (); } / ** * Создать простое графическое окно * * @author: tuzongxun * @title: launcframe * @param * @return void * @date 18 мая 2016 г. 9:57:00 * @Throws * / public void launcFrame () {setLocation (300, 200); это. Setize (200, 400); Добавить (tftxt, borderlayout.south); Добавить (Tarea, Borderlayout.north); пакет(); // Слушайте событие закрытия окна графического интерфейса this.addwindowlistener (new windowdapter () {@override public void windowclose (windowevent e) {system.exit (0); dishonnect ();}}); tftxt.addactionListener (new tflister ()); setVisible (true); соединять(); } / ** * Подключиться к серверу * * @author: tuzongxun * @title: connect * @param * @return void * @date 18 мая 2016 г. 9:56:49 * @Throws * / public void Connect () {try {// Создать новое серверное соретинг = новый сокет ("127.0.0.1", 8888888888888 гг.; // Получить клиентский выходной поток DataOutputStream = new DataOutputStream (socket.getOutputStream ()); System.out.println («Подключиться к серверу»); } catch (Unknownhostexception e) {e.printstackTrace (); } catch (ioException e) {e.printstackTrace (); }} / ** * Закрыть ресурсы клиентов * * @author: tuzongxun * @title: decknect * @param * @return void * @date 18 мая 2016 г. 9:57:46 * @throws * / public void disconnect () {try {dataoutputStream.close (); Socket.Close (); } catch (ioException e) {e.printstackTrace (); }} / ** * Отправить сообщение на сервер * * @author: tuzongxun * @title: sendmessage * @param @param text * @return void * @date 18 мая 2016 г. 9:57:56 AM * @Throws * / private void SendMessage (String Text) {try {DecAoutputStream.writeUtf (text); DataOutputStream.flush (); } catch (ioException e1) {e1.printstacktrace (); }} / ** * Область ввода графического окна для прослушивания события возврата перевозки * * @author tuzongxun123 * * / private class tflister реализует ActionListener {@Override public void actionPerformed (actionEvent e) {string text = tftxt.getText (). Trim (); TAMEAS.Settext (текст); tftxt.settext ("" "); // отправлять данные на сервер SendMessage (Text); }}}Сервер:
пакет чат.chat; импортировать java.io.datainputstream; импортировать java.io.eofexception; импортировать java.io.ioexception; импортировать java.net.bindexception; импортировать java.net.serversocket; импортировать java.net.socket; /*** Java использует компоненты сокета и AWT для простого реализации функции онлайн -чата. Сервер может реализовать сервер для постоянной отправки сообщений на сервер после подключения одного клиента*, но не поддерживает несколько клиентов к подключению одновременно. Причина в том, что после получения клиентского соединения в коде он будет продолжать слушать входные входы, вызывая закупорку*, чтобы сервер не мог прослушать другого клиента дважды. Если вы хотите его реализовать, вам нужно использовать асинхронное или многопоточное * * @author tuzongxun123 * */ public class Catserver {public static void main (string [] args) {// независимо ли сервер успешно логический iSstart = false; // сервер Socket Serversocket SS = NULL; // сокет клиентского сокета = null; // Сервер чтение клиента данных ввода потока ввода DataInputStream DataInputStream = null; try {// Start Server SS = New Serversocket (8888); } catch (bindException e) {System.out.println ("порт уже используется"); // закрыть программу System.Exit (0); } catch (Exception e) {e.printstackTrace (); } try {isstart = true; while (iSstart) {boolean isConnect = false; // запустить сокет прослушивания = ss.accept (); System.out.println ("один клиент Connect"); isConnect = true; while (isconnect) {// Получить клиент входной поток DataInputStream = new DataInputStream (socket.getInputStream ()); // Читать данные, передаваемые клиентским String Message = DataInputStream.readutf (); System.out.println («Клиент говорит:« + сообщение); }}} catch (eoFexception e) {system.out.println ("клиент закрыт!"); } catch (Exception e) {e.printstackTrace (); } наконец {// закройте соответствующий ресурс try {dataInputStream.close (); Socket.Close (); } catch (ioException e) {e.printstackTrace (); }}}}Выше приведено соответствующие знания о Java Socket, внедряющем простую функцию онлайн -чата (i), представленную редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!