이 기사에서는 Java 프로그래밍의 TCP 프로토콜을 기반으로 한 소켓 채팅방 구현에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
여기에서 소켓 소켓은 프로그래밍에 사용되며 TCP 신뢰할 수있는 서비스를 기반으로 서버와 클라이언트 간의 이중 통신을 수행합니다.
서버 서버 측 :
패키지 com.han; import java.awt.container; import java.awt.event.actionevent; import java.awt.event.actionListener; import java.awt.event.windowadapter; import java.awt.event.windowevent; import java.io. javax.swing.jscrollpane; import javax.swing.jtextArea; import javax.swing.jtextfield;/***이 프로그램은 TCP 프로그램의 서버 프로그래밍 부분을 구현합니다. * 소켓 소켓을 사용한 프로그래밍은 TCP 신뢰할 수있는 서비스를 기반으로 클라이언트와의 이중 통신을 달성하기 위해 수행됩니다. * 프로그래밍을 위해이 패키지의 클라이언트 클라이언트 클라이언트를 참조하십시오. * @author han */ @suppresswarnings ( "Serial") public class server 확장 jdialog {private bufferedReader reader; 개인 프린트 라이터 작가; 개인 서버 소켓 서버; 개인 소켓 소켓; 개인 jtextArea ta = 새로운 jtextArea (); Private JSCrollpane SP = 새로운 JSCrollPane (TA); Private Jtextfield tf = New Jtextfield (); 컨테이너 CC; 공개 서버 (문자열 제목) {settitle (title); AddWindowListener (새 WindowAdapter () {public void WindowClosing (WindowEvent we) {dispose (); // 대화 시스템과 관련된 모든 관련 리소스를 취소합니다 .exit (0); // 프로그램을 정상적으로 종료}}); cc = getContentPane (); setLayout (null); ta.setlinewrap (true); ta.seteditable (false); sp.setbounds (0,0,300,342); tf. 세트 바운드 (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 e1.printstacktrace ()); ta.append ( "user1 :"+tf.getText ()+'/n'); } void getServer () {try {server = new Serversocket (8998); Ta.Append ( "서버 소켓이 성공적으로 생성되었습니다/n"); while (true) {ta.append ( "클라이언트 연결 대기/n"); socket = server.accept (); ta.append ( "클라이언트 연결/n"); reader = new bufferedReader (new inputStreamReader (socket.getInputStream ())); getClientMessage (); }} catch (예외 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 ((null) {try {socket.close (); } catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }}} public static void main (String [] args) {Server user1 = new Server ( "user1"); user1. 세트 바운드 (0,0,300,400); user1.setResizable (false); user1.set -Visible (true); user1.getServer (); }}클라이언트 클라이언트 :
패키지 com.han; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import javax.swing.*;/***이 프로그램은 클라이언트 프로그래밍 부분을 TCP 프로그램의 일부를 구현합니다. * 소켓 소켓을 사용한 프로그래밍은 TCP 신뢰할 수있는 서비스를 기반으로 서버와의 이중 통신을 달성하기 위해 수행됩니다. * 서버를 프로그래밍하기 위해이 패키지의 서버 클래스를 참조하십시오 * 다른 플랫폼과 다른 컴퓨터에서 실행할 수 있지만 코드에 작성된 IP 주소는 서버 프로그램 서버를 실행하는 시스템의 IP 주소로 수정해야합니다. * @author han */ @suppresswarnings ( "Serial") public class 클라이언트 확장 jdialog {private bufferedReader reader; 개인 프린트 라이터 작가; 개인 소켓 소켓; 개인 jtextArea ta = 새로운 jtextArea (); Private JSCrollpane SP = 새로운 JSCrollPane (TA); Private Jtextfield tf = New Jtextfield (); 컨테이너 CC; 공개 클라이언트 (문자열 제목) {settitle (title); AddWindowListener (새 WindowAdapter () {public void WindowClosing (WindowEvent we) {dispose (); // 대화 시스템과 관련된 모든 관련 리소스를 취소합니다 .exit (0); // 프로그램을 정상적으로 종료}}); cc = getContentPane (); setLayout (null); ta.setlinewrap (true); ta.seteditable (false); sp.setbounds (0,0,300,342); tf. 세트 바운드 (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 ( "Connect/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 (클라이언트)를 통신/n으로 다시 시작합니다"); 부서지다; }}} catch (ioexception e) {// todo 자동 생성 캐치 블록 ta.append ( "Communication/n의 사용자 1 (Server)"); e.printstacktrace (); } try {if (reader! = null) {reader.close (); }} catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } if ((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 운영 Dom Node Skills의 요약"및 "Java Cache 운영 기술의 요약".
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.