集册 Java实例教程 使用线程处理套接字服务器

使用线程处理套接字服务器

欢马劈雪     最近更新时间:2020-01-02 10:19:05

644
使用线程处理套接字服务器
/**
来 自 nowjava
**/

import java.io.*;

import java.net.*;

import java.lang.*;


public class Server {

     public static void main(String[] args) throws IOException {

          final int port = 444;

          System.out.println("Server waiting for connection on port "+port);

          ServerSocket ss = new ServerSocket(port);

          Socket clientSocket = ss.accept();

          System.out.println("Recieved connection from "+clientSocket.getInetAddress()+" on port "+clientSocket.getPort());

          //create two threads to send and recieve from client

          RecieveFromClientThread recieve = new RecieveFromClientThread(clientSocket);

          Thread thread = new Thread(recieve);

          thread.start();

          SendToClientThread send = new SendToClientThread(clientSocket);

          Thread thread2 = new Thread(send);

          thread2.start();
          /*
           from nowjava.com - 时代Java 
          */

     }

}


class RecieveFromClientThread implements Runnable

{

     Socket clientSocket=null;

     BufferedReader brBufferedReader = null;


     public RecieveFromClientThread(Socket clientSocket)

     {

          this.clientSocket = clientSocket;

     }//end constructor

     public void run() {

          try{

          brBufferedReader = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));


          String messageString;

          while(true){

          while((messageString = brBufferedReader.readLine())!= null){//assign message from client to messageString

               if(messageString.equals("EXIT"))

               {

                    break;//break to close socket if EXIT

               }

               System.out.println("From Client: " + messageString);//print the message from client

               System.out.println("Please enter something to send back to client..");

          }

          this.clientSocket.close();

          System.exit(0);

     }


     }

     catch(Exception ex){System.out.println(ex.getMessage());}

     }

}//end class RecieveFromClientThread


class SendToClientThread implements Runnable

{

     PrintWriter pwPrintWriter;

     Socket clientSock = null;


     public SendToClientThread(Socket clientSock) {

          this.clientSock = clientSock;

     }


     public void run() {

          try{

          pwPrintWriter =new PrintWriter(new OutputStreamWriter(this.clientSock.getOutputStream()));//get outputstream


          while(true) {

               String msgToClientString = null;

               BufferedReader input = new BufferedReader(
展开阅读全文