Много раз в проектах Javaweb нам необходимо использовать коммуникацию сокета для реализации функций. При использовании сокета в Интернете нам нужно создать программу слушателей и начать прослушивание сокетов, когда программа начинается. Наш сценарий приложения находится в проекте Java, который требует, чтобы внешние аппаратные устройства могли общаться через TCP для получения данных, загруженных устройством, и реагирования на данные.
Давайте посмотрим на код прослушивания веб -сайта:
Импорт javax.servlet.servletContexTexTent; Import javax.servlet.servletContextListener; открытый класс AttendsOcetListener реализует ServletContextLister {Private SocketThread SocketThread; public void contextDestroyed (ServletContexTextent arge) {if (null! SocketThread.CloseSocketServer (); SocketThread.interrupt (); }} @Override public void contextInitialized (ServletContexTevent arg) {// TODO Auto Generated Method Stub if (null == socketThread) {// Создание нового потока Class SocketThread = new SocketThread (null); // Start Thread SocketThread.start (); }}}Создать тему:
Импорт java.io.ioexception; import java.net.serversocket; import java.net.socket; import java.util.arraylist; import java.util.list; public Class SocketThread extends intead {private serversocketcocket = null; public socketThread (serversocket serverscoket) {try {if (null == serversocket) {this.serversocket = new serversocket (); System.out.println ("STOCKET START"); }} catch (Exception e) {System.out.println ("Ошибка SocketThread Создание службы сокета"); e.printstacktrace (); }} public void run () {while (true) {try {if (serversocket == null) {break;} else if (serversocket.isclosed ()) {break;} сокет сокета = serversocketocket.accept (); if (null! = socket &&! socket.isclosed ()) {// Принятый процесс поток данных t = новый поток (новый сокет (сокет)); t.start (); } else {break;}} catch (Exception e) {System.out.println ("Ошибка создания службы сокета в SocketThread"); e.printstacktrace (); }}} public void sloseSocketServer () {try {if (null! = serversocket &&! serversocketocket.isclosed ()) {serversocket.close (); }} catch (ioException e) {// todo автоматически сгенерированный блок e.printstacktrace (); }}}Обработка полученных данных:
Импорт java.io.bufferedReader; Import java.io.ioException; Import java.io.inputStreamReader; импорт java.io.outputStream; импорт java.net.socket; // Входной поток, соответствующий розетку, обработанной этой потоком BufferedReader Br = null; String str = null; Строка содержимого = null; InputStreamReader Reader = null; Общедоступный соклерат (сокет) бросает ioException {this.socket = socket; reader = new InputStreamReader (this.Socket.getInputStream (), "utf-"); br = new BufferedReader (читатель); } @Override public void run () {try {// Использовать цикл, чтобы непрерывно читать данные, отправляемые клиентом из сокета while (true) {content = readfromClient (); System.out.println (Content); if (content == null) {break; } OutputStream OS = socket.getOutputStream (); Os.Write (("res, ok, <год класса, Xiao Ming>,#" + "/n").getbytes("utf-")); os.flush ();}} catch (ioexception e) {e.printstacktrace (); }} // Определите метод для чтения данных клиента Private String ReadFromClient () {try {str = br.readline (); вернуть Str; } // Если исключение поймано, это означает, что клиент, соответствующий сокету, закрыл улов (ioException e) {try {br.close (); reader.close (); socket.close ();} catch (ioexception e) {// todo Auto-Generated Catch Blocke.printstacktrace ();}} null; null; }}Клиент -код:
PackageImport java.io.*; Import java.net.*; публичный класс TalkClient {public static void main (String args []) бросает Unninglehostexception, ioException {сокет сокета = новый сокет ("...",); printwriter os = new PrintWriter (socket.getOutputer InputStreamReader (socket.getInputStream ())); int i =; while (socket.isconnected ()) {os.print ("beat ,,,,,#"+"/n"); os.flush (); System.out.println ("client:"+i); System.out.println ("Server:"+IS. os.close (); // закрыть выходной поток разъема is.close (); // Закройте входной поток разъема сокета .close (); // закрыть сокет}}Выше приведено метод использования многопоточных и длинных соединений в веб-проектах Java в веб-проектах Java, представленных редактором. Я надеюсь, что это будет полезно для всех!