최근에 온라인 웹 커뮤니케이션이 필요한 프로젝트를 시작했습니다. 나는 오랫동안 코드를 작성하지 않았으며 그것에 익숙하지 않습니다. 그래서 나는 먼저 데모를 작성하고 그것을 연습하고 Wulin 네트워크 플랫폼에서 공유하여 모든 사람과 함께 사용할 수 있도록 기록을 만들었습니다.
먼저 구현 단계를 알려 드리겠습니다.
1. AWT 구성 요소와 소켓을 사용하여 간단한 단일 클라이언트를 구현하여 서버에 메시지를 지속적으로 보냅니다.
2. 스레드와 결합하여 메시지를 보내기 위해 서버에 대한 멀티 클라이언트 연결을 실현하십시오.
3. 서버를 모든 클라이언트에 전달하고 동시에 클라이언트에 표시하는 서버를 구현하십시오.
4. AWT 구성 요소에 의해 생성 된 창 인터페이스를 프론트 엔드 JSP 또는 HTML로 표시된 인터페이스로 변경하고 Java 소켓에 의해 구현 된 클라이언트를 프론트 엔드 기술 구현으로 변경하십시오.
여기서 우리는 먼저 첫 번째 단계의 간단한 기능을 구현합니다. 어려움은 다음과 같습니다.
1. AWT 구성 요소를 사용한 적이 없으며 Java 관련 청취 이벤트를 사용한 적이 없습니다.
2. 클라이언트와 서버를 상호 작용하기 위해 오랜 시간 동안 소켓을 사용하지 않았으며 실제로 CSS 구조를 개발하지 않았습니다.
기능을 구현하기위한 코드는 다음과 같습니다.
고객:
패키지 chat.chat; java.awt.borderlayout import; import java.awt.frame; Java.awt.TextArea 가져 오기; java.awt.textfield import; import java.awt.event.actionevent; import java.awt.event.actionListener; java.awt.event.windowadapter를 가져옵니다. java.awt.event.windowevent import; import java.io.dataOutputStream; import java.io.ioexception; import java.net.socket; import java.net.unknownhostexception; / ** * 온라인 채팅 클라이언트 1. 그래픽 창 인터페이스 개요 생성 2. 개요에 가까운 이벤트 추가 3. 입력 영역과 컨텐츠 디스플레이 영역을 개요에 추가 4. 입력 영역에 대한 캐리지 리턴 이벤트 추가 * 5. 서버 연결을 설정하고 데이터를 보내십시오 * * @Author tuzongxun123 * */ public class chat clast frame {// user class expectfult em (public textfult and from) {// public class intectfild and. // 컨텐츠 디스플레이 영역 비공개 텍스트주의 맛 = 새로운 TextRea (); 개인 소켓 소켓 = NULL; // 데이터 출력 스트림 비공개 DataOutStream DataOutputStream = NULL; public static void main (String [] args) {new ChatClient (). launcframe (); } / ** * 간단한 그래픽 창을 만듭니다 * * @author : tuzongxun * @title : launcframe * @param * @return void * @date 2016 년 5 월 18 일 9:57:00 AM * @throws * / public void launcframe () {setLocation (300, 200); this.setsize (200, 400); 추가 (tftxt, borderlayout.south); 추가 (Tarea, Borderlayout.north); 팩(); // 그래픽 인터페이스 창의 닫기 이벤트를 듣습니다. tftxt.addactionListener (new tflister ()); setvisible (true); 연결하다(); } / ** * 서버에 연결 * * @author : tuzongxun * @title : connect * @param * @return void * @date 2016 년 5 월 18 일 9:56:49 am * @throws * / public void connect () {// 새로운 서버 연결 Socket = New Socket ( "127.0.0.1", 8888); // 클라이언트 출력 가져 오기 스트림 DataOutputStream = 새 DataOutputStream (socket.getOutputStream ()); System.out.println ( "서버에 연결"); } catch (unknownHostException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); }} / ** * 클라이언트 리소스 닫기 * * @author : tuzongxun * @title : 링크 앤 @param * @return void * @date 2016 년 5 월 18 일 9:57:46 AM * @throws * / public void disphonnect () {try {dataOutputStream.close (); socket.close (); } catch (ioexception e) {e.printstacktrace (); }} / ** * 서버로 메시지 보내기 * * @author : tuzongxun * @title : sendmessage * @param @param text * @return void * @date 9:57:56 AM * @throws * / private void sendmessage (string text) {try attrupstream.writeUtf (text); DataOutputStream.flush (); } catch (ioexception e1) {e1.printstacktrace (); }} / ** * 캐리지 리턴 이벤트를 듣기위한 그래픽 창 입력 영역 * * @author tuzongxun123 * * / private class tflister 구현 actionListener {@override public void actionPerformed (ActionEvent e) {문자열 text = tftxt.getText (). trim (); Taxa.settext (텍스트); tftxt.settext ( ""); // 서버로 데이터를 보내십시오 SendMessage (텍스트); }}}섬기는 사람:
패키지 chat.chat; import java.io.datainputstream; import java.io.eofexception; import java.io.ioexception; java.net.bindexection 가져 오기; import java.net.serversocket; import java.net.socket; /*** Java는 소켓 및 AWT 구성 요소를 사용하여 온라인 채팅 기능을 구현합니다. 서버는 한 클라이언트를 연결 한 후 서버에 메시지를 지속적으로 전송하도록 서버가 인식 할 수 있지만 동시에 여러 클라이언트가 연결하도록 지원하지 않습니다. 그 이유는 코드에서 클라이언트 연결을 얻은 후 클라이언트 입력이 루프로 계속 들려 주어 서버가 다른 클라이언트를 두 번들을 수 없도록 막아냅니다. 구현하려면 비동기식 또는 멀티 스레드를 사용해야합니다 * * @author tuzongxun123 */ public class chatserver {public static void main (string [] args) {// 서버가 성공적으로 시작되었는지 부울 isstart = false; // Server Socket ServerSocket SS = NULL; // 클라이언트 소켓 소켓 소켓 = NULL; // 서버 읽기 클라이언트 데이터 입력 스트림 DatainputStream DatainputStream = null; {// start server ss = new serversocket (8888); } catch (bindException e) {System.out.println ( "포트가 이미 사용 중입니다"); // 프로그램 시스템을 닫습니다 .exit (0); } catch (예외 e) {e.printstacktrace (); } try {isstart = true; while (isstart) {boolean isconnect = false; // 청취 소켓 시작 = ss.accept (); System.out.println ( "하나의 클라이언트 연결"); isconnect = true; while (isconnect) {// 클라이언트 입력 스트림을 가져옵니다 DatainputStream = new DatainputStream (socket.getInputStream ()); // 클라이언트가 전달한 데이터를 읽습니다. String Message = DatainputStream.readutf (); System.out.println ( "클라이언트 :" + 메시지); }}} catch (eofexception e) {system.out.println ( "클라이언트 폐쇄!"); } catch (예외 e) {e.printstacktrace (); } 마지막으로 {// 관련 리소스를 닫으십시오. {datainputStream.close (); socket.close (); } catch (ioexception e) {e.printstacktrace (); }}}}위의 것은 편집자가 소개 한 간단한 온라인 채팅 기능 (i)을 구현하는 Java 소켓에 대한 관련 지식입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!