이 기사에서는 소켓 간단한 채팅 도구를 공유합니다.
코드는 그림과 같이 실행되며 꽤 좋아 보입니다.
서버 측
패키지 qiu; import java.awt.borderlayout; import java.awt.event.actionevent; import java.awt.event.actionListener; import java.awt.print.printable; import java.io.bufferedReader; import java.io.io.io exception; import java.io.inputstreameader; java.net.serversocket; import java.net.socket; import java.util.calendar; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.swing.swing.swing.swing.swex. 간단한 채팅 소프트웨어 용 서버 */public class myserver 확장 JFrame 구현 actionListener {jtextArea jtextArea = null; // 단일 라인 영역을 표시하는 데 사용되는 단일 라인 영역 jtextfield jtextfield = null; // 단일 라인 텍스트 jbutton sendbutton = null을 편집 할 수 있습니다. jpanel jpanel = null; jscrollpane jscrollpane = null; // 클라이언트 객체 인쇄기 인쇄기 PrintWriter = null;/*** 서버의 주요 함수**/public static void main (string [] args) {// todo 자동 생성 메소드 새 myserver ();}/*** 서버의 생성자*/public myserver () {// 초기화는 초기화입니다. jtextArea (); Jtextfield = New Jtextfield (20); SendButton = New JButton ( "Send"); sendbutton.addactionListener (this); SendButton.setActionCommand ( "Send"); jscrollpane = 새로운 jscrollpane (jtextArea); jpanel = 새로운 jpanel (); jpanel.add (jtextfield); // 편집 상자 추가 jpanel.add (sendbutton); // 추가 버튼 추가 // 두 패널의 레이아웃을 추가하십시오. this.add (jpanel, borderlayout.south); this.setsize (400,300); this.settitle ( "채팅 서버"); this.setDefaultCloseOperation (jframe.exit_on_close); // 종료 버튼을 설정 this.setVisible (true); this.setResizable (true); // 다음은 소켓 서버의 구성입니다. {// 서버가 serverSocket ss = new Serversocket (9988); // 클라이언트가 소켓 소켓을 연결하기를 기다리는 대기 = ss.Accept (); // 클라이언트 버퍼드 리더가 보낸 데이터 스트림을 가져옵니다. printwriter = new printwriter (socket.getoutPutStream (), true); // 클라이언트에서 보낸 정보를 읽습니다. jtextArea.append ( "client"+gettime ()+"/r/n"+info+"/r/n"); }} catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }}/*** 현재 시간을 얻는 데 사용* @return 현재 시간*/public string gettime () {// calendar c = calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // int minute = c.get (calendar.minute)를 얻습니다. int second = c.get (calendar.second); Return Hour+":"+minute+":"+Second; }/*** 버튼을 클릭 할 때 호출*/@atedricepublic void actionPerformed (actionEvent e) {// todo 자동 생성 메소드 stub // call if (e.getActionCommand (). equals ( "send")) {// jtextfield의 서버가 작성한 컨텐츠를 클라이언트 string info = jtextfield (); jtextArea.append ( "Server"+gettime ()+"/r/n"+info+"/r/n"); printwriter.println (정보); // 상자 내용을 명확하게 전송합니다 jtextfield.settext ( ""); }}}고객
패키지 qiu; import java.awt.borderlayout; import java.awt.event.actionevent; import java.awt.event.actionListener; import java.io.bufferedReader; import java.io.ioexception; import java.io.inputstreamreader; import java.io.printwriter; java.net.suts; java.net.unknownhostexception; import java.util.calendar; import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.jtextArea; javax.swing. */public class myclient 확장 jframe 구현 actionListener {jtextArea jtextArea = null; jtextfield jtextfield = null; jpanel jpanel = null; jscrollpane jscrollpane = null; jbutton sendbutton = null; printwriter printwriter = null;/*** 클라이언트의 주요 함수**/public static void main (String [] args) {// todo 자동 생성 메소드 스텁 new myclient ();}/*** 클라이언트 생성자는*/public myclient () {// gui 초기화 jtextarea = new Jtextarea ()를 초기화하는 데 사용됩니다. Jtextfield = New Jtextfield (20); SendButton = New JButton ( "Send"); sendbutton.addactionListener (this); SendButton.setActionCommand ( "Send"); jscrollpane = 새로운 jscrollpane (jtextArea); jpanel = 새로운 jpanel (); jpanel.add (jtextfield); jpanel.add (SendButton); this.add (jscrollpane, borderlayout.center); this.add (jpanel, borderlayout.south); this.setsize (400, 300); this.settitle ( "채팅 클라이언트"); this.setDefaultCloseOperation (jframe.exit_on_close); this.set -Visible (true); this.setResizable (true); // 소켓 통신 코드 시도 {소켓 S = 새 소켓 ( "127.0.0.1", 9988); bufferedReader br = new bufferedReader (new inputStreamReader (s.getInputStream ())); printwriter = new printwriter (s.getoutOutputStream (), true); while (true) {// 서버 string으로 보낸 정보를 계속 읽으십시오. String = br.readline (); jtextArea.append ( "Server"+gettime ()+"/r/n"+String+"/r/n"); }} catch (unknownHostException e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } catch (ioexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }}/*** 현재 시간을 얻는 데 사용* @return 현재 시간*/public string gettime () {// 각 개별 시간 도메인이 수정 될 수 있습니다 C = Calendar.getInstance (); int hour = c.get (calendar.hour_of_day); // int minute = c.get (calendar.minute)를 얻습니다. int second = c.get (calendar.second); Return Hour+":"+minute+":"+Second; }/*** 버튼을 클릭 할 때 호출*/@atriadepublic void actionPerformed (actionEvent e) {// a auto-recenated method stub if (sendButton.getActionCommand (). // 클라이언트가 보낸 정보를 서버 jtextArea.append ( "client"+gettime ()+"/r/n"+info+"/r/n")으로 보냅니다. printwriter.println (정보); jtextfield.settext ( ""); }}} 위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.