클라이언트와 서버 간의 통신을 실현하기 위해 Java 언어로 네트워크 서버를 구축하고 클라이언트가 독립적 인 스레드를 가지고 있으며 서로를 방해하지 않는다는 것을 인식하십시오.
서버와 멀티 스레딩 간의 통신을 실현하기 위해 멀티 스레딩 적용을위한 기본 단계
Server-Side Server.java
패키지 테스트 .concurrent.socket; java.io.*; import java.net.inetAddress; import java.net.serversocket; import java.net.socket; /*** 15-6-22의 동에 의해 만들어졌습니다. * TCP 프로토콜을 기반으로 한 소켓 통신, 사용자 로그인을 구현* 서버 측*/공개 클래스 서버 {public static void main (String [] args) {try {// 1. 서버 측 소켓, 즉 ServerSocket을 생성하고 바운드 포트를 지정 하고이 포트 서버 소켓 ServerSocket = New Serversocket (8888)을 듣습니다. 소켓 소켓 = null; // 클라이언트 수를 기록 int count = 0; System.out.println ( "*** 서버가 시작하려고합니다. 클라이언트의 링크를 기다리고 있습니다 ***"); // 루프 클라이언트의 링크를 기다리는 동안 (true) {// acccep () 메소드를 호출하여 청취를 시작하여 클라이언트의 링크 소켓을 기다리고 있습니다. // 새 스레드 생성 ServerTheRDREAD SERVERTHREAD = 새 ServerThread (Socket); // 스레드 시작 ServerThread.Start (); 카운트 ++; // 클라이언트 수를 검색 System.out.println ( "클라이언트 수 :" + count); inetAddress address = socket.getInetAddress (); System.out.println ( "현재 클라이언트의 IP :" + address.gethostAddress ()); }} catch (ioexception e) {e.printstacktrace (); }}} 서버 측 스레드 처리 클래스 Serverthread.java
패키지 테스트 .concurrent.socket; java.io.*; import java.net.socket; /*** 15-6-22의 동에 의해 만들어졌습니다. * 서버 측 스레드 처리 클래스*/public class serverthread는 스레드를 확장합니다 {// 소켓 소켓 소켓 = null; public serverthread (소켓 소켓) {this.socket = 소켓; } // 스레드에서 실행 된 작업은 클라이언트의 요청에 응답합니다. 공개 void run () {inputStream은 = null; inputStreamReader isr = null; BufferedReader br = null; OutputStream os = null; 인쇄기 PW = NULL; 시도 {// 입력 스트림을 가져 와서 클라이언트의 정보를 읽으십시오. isr = new inputStreamReader (IS); // 바이트 스트림을 문자 스트림으로 변환 br = 새로운 버퍼드 리더 (ISR); // 버퍼링 된 문자열 추가 정보 = null; // Data while while ((info = br.readline ())! = null) {System.out.println ( "나는 서버이고 클라이언트가 다음과 같이 말했다 :" +info); } socket.shutdownInput (); // 입력 스트림을 닫습니다. // 클라이언트의 요청에 따라 출력 스트림을 가져옵니다. os = socket.getoutPutStream (); PW = 새로운 인쇄기 (OS); // print stream pw.write ( "환영")로 패키지; pw.flush (); // 캐시 된 출력} catch (ioException e) {e.printstacktrace (); } 마침내 {try {// 리소스를 닫습니다 if (pw! = null) pw.close (); if (os! = null) os.close (); if (is! = null) is.close (); if (br! = null) br.close (); if (socket! = null) socket.close (); } catch (ioexception e) {e.printstacktrace (); }}}} Client.java
패키지 테스트 .concurrent.socket; java.io.*; import java.net.socket; /*** 15-6-22의 동에 의해 만들어졌습니다. * 클라이언트*/public class client {public static void main (String [] args) {try {// 1. 클라이언트 소켓 생성, 서버 포트 번호를 지정하고 주소 소켓 소켓 = 새 소켓 ( "LocalHost", 8888); // 2. 출력 스트림을 가져 와서 서버 출력 스트림으로 정보를 보냅니다. outStream os = socket.getoutPutStream (); // 바이트 출력 스트림 PrintWriter PW = New PrintWriter (OS); // 출력 스트림을 인쇄 스트림으로 랩핑하면 pw.write ( "사용자 이름 : tom; password : 456"); pw.flush (); socket.shutdownoutput (); // 출력 스트림을 닫습니다. inputStream은 = socket.getInputStream (); inputStreamReader isr = new inputStreamReader (IS); bufferedReader br = 새로운 버퍼드 리더 (ISR); 문자열 정보 = null; // read while (((info = br.readline ())! = null) {System.out.println ( "i is client : 서버 :" + info); } br.close (); is.close (); isr.close (); pw.close (); os.close (); socket.close (); } catch (ioexception e) {e.printstacktrace (); }}}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.