В этой статье описывается реализация чата сокета на основе протокола TCP в программировании Java. Поделитесь этим для вашей ссылки, следующим образом:
Здесь розетки используются для программирования, которые выполняют двойную связь между сервером и клиентом на основе надежного сервиса TCP.
Серверная сторона сервера:
Пакет com.han; импорт java.awt.container; import java.awt.event.actionevent; импорт java.awt.event.actionlistener; импорт java.awt.event.windowadapter; импорт java.awt.event.windowevent; импорт java.io.*; import java.nel. javax.swing.jscrollpane; import javax.swing.jtextarea; импортировать javax.swing.jtextfield;/*** Эта программа реализует сервер программирования программы TCP. * Программирование с использованием сокетов сокетов выполнено для достижения двойной связи с клиентом на основе надежного сервиса TCP. * См. Клиент класса клиента в этом пакете для программирования * @author han * */ @puspresswarnings ("serial") Общедоступный сервер класса Extends jdialog {private BufferedReader Reader; Частный писатель печати; Private Serversocket Server; частная розетка; private jtextarea ta = new jtextarea (); private jscrollpane sp = new jscrollpane (ta); Private JTextField TF = new JTextField (); Контейнер CC; public Server (название строки) {Centitle (title); addWindowlistener (new windowdapter () {public void windowclose (windowEvent we) {dispose (); // Отмена всех связанных ресурсов, связанных с диалога -системой. Execit (0); // Выход с программой нормально}}); cc = getContentPane (); setlayout (null); ta.setlinewrap (true); ta.setedible (false); Sp.SetBounds (0,0,300 342); tf.setbounds (0,342,300,25); cc.Add (sp); cc.Add (TF); tf.addactionListener (new ActionListener () {public void actionPerformed (actionEvent e) {try {writer = new PrintWriter (socket.getOutputStream (), true);} catch (ioException e1) {// toDo Auto-Generated Catch Block e1.printStckTrace ();} writer.println (); ta.append ("user1:"+tf.gettext ()+'/n'); } void getServer () {try {server = new Serversocket (8998); TA.Append ("Серверная сокет была создана успешно/n"); while (true) {ta.append («ожидание клиентского соединения/n»); socket = server.accep (); ta.append ("client подключен/n"); reader = new BufferedReader (New InputStreamReader (socket.getInputStream ())); GetClientMessage (); }} catch (Exception e) {e.printstackTrace (); }} private void getClientMessage () {try {while (true) {string news = reader.readline (); if (news! = null) {ta.append ("user2:"+news+"/n"); } else {ta.append ("user2 (client) отключен/n"); перерыв; }}} catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } try {if (reader! = null) {reader.close (); }} catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } if (socket! = null) {try {socket.close (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }}} public static void main (string [] args) {server user1 = new Server ("user1"); user1.setbounds (0,0,300,400); user1.setReSizable (false); user1.setvisible (true); user1.getServer (); }}Клиент клиента:
пакет com.han; импорт java.awt.*; import java.awt.event.*; импортировать java.io.*; import java.net.*; import javax.swing.*;/***Эта программа реализует клиентскую программу программы программы TCP. * Программирование с использованием сокетов сокетов выполнено для достижения двойной связи с сервером на основе надежной службы TCP. * См. Класс сервера в этом пакете для программирования сервера * его можно запустить на разных платформах и разных машинах, но IP -адрес, записанный в коде, должен быть изменен на IP -адрес машины, работающего на сервере программы сервера. * @author han * */ @spistresswarnings ("serial") клиент открытого класса расширяет jdialog {private bufferedread Reader; Частный писатель печати; частная розетка; private jtextarea ta = new jtextarea (); private jscrollpane sp = new jscrollpane (ta); Private JTextField TF = new JTextField (); Контейнер CC; Public Client (Title) {Cettitle (title); addWindowlistener (new windowdapter () {public void windowclose (windowEvent we) {dispose (); // Отмена всех связанных ресурсов, связанных с диалога -системой. Execit (0); // Выход с программой нормально}}); cc = getContentPane (); setlayout (null); ta.setlinewrap (true); ta.setedible (false); Sp.SetBounds (0,0,300 342); tf.setbounds (0,342,300,25); cc.Add (sp); cc.Add (TF); tf.addactionListener (new ActionListener () {public void actionPerformed (actionEvent e) {writer.println (tf.getText ()); ta.append ("user2:"+tf.getText ()+'/n'); tf.settext ("");}}); } private void connect () {ta.append ("Попробуйте подключить/n"); try {socket = new Socket ("192.168.1.3", 8998); } catch (Unknownhostexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } try {writer = new PrintWriter (socket.getOutputStream (), true); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } ta.Append ("Заполните соединение/n"); } private void getClientMessage () {try {reader = new BufferedReader (new InputStreamReader (socket.getInputStream ())); while (true) {String news = reader.readline (); if (news! = null) {ta.append ("user1:"+news+"/n"); } else {ta.Append ("user1 (сервер) был отключен, и когда сервер воскрешен, перезапустите user2 (client) для связи/n"); перерыв; }}} catch (ioexception e) {// todo автоматически сгенерированный блок улова ta.append ("user1 (server) для связи/n"); e.printstacktrace (); } try {if (reader! = null) {reader.close (); }} catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); } if (socket! = null) {try {socket.close (); } catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }}} public static void main (string [] args) {client user2 = new Client ("user2"); user2.setBounds (0,0,300 400); user2.setvisible (true); user2.setReSizable (false); user2.connect (); user2.getClientMessage (); }}Для получения дополнительной информации о контенте, связанном с Java, пожалуйста, ознакомьтесь с темами этого сайта: «Краткое изложение навыков программирования сокетов Java», «Сводка навыков файла Java и каталогов», «Учебное пособие по структуре данных Java и алгоритм», резюме навыков Java Operation Dom Node »и« Сводка операции Java Cache ».
Я надеюсь, что эта статья будет полезна для всех Java Programming.