多線程式:
在實際使用過程中我們都會希望服務(wù)端能同時為多個客戶端提供服務(wù)
最直接的辦法就是每個客戶端一個線程
這種方式會在一定意義上占用更多系統(tǒng)資源
在實際使用過程中我們都會希望服務(wù)端能同時為多個客戶端提供服務(wù)
最直接的辦法就是每個客戶端一個線程
這種方式會在一定意義上占用更多系統(tǒng)資源
package com.lei.socket.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MultiThreadServer {
//啟動服務(wù)端監(jiān)聽
public void start(){
try{
ServerSocket server = new ServerSocket(port);
Socket client = null;
while(runFlag){
client = server.accept();
System.out.println("accept client " + client.getInetAddress().getHostAddress());
new Thread(new ClientHandle(client)).start();
}
server.close();
}catch(IOException e){
System.out.println("start error");
}
}
public static void main(String[] args){
MultiThreadServer s = new MultiThreadServer();
s.start();
}
class ClientHandle implements Runnable{
public ClientHandle(Socket s){
this.client = s;
}
//處理客戶端請求
public void handleClient(){
try{
BufferedReader inReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedWriter outWriter = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
while(true){
outWriter.write("please input String->");
outWriter.flush();
String str = inReader.readLine();
if(str.equalsIgnoreCase("quit")){
outWriter.write("quit ok");
client.close();
break;
}
else{
outWriter.write("reulst is :" + new StringBuffer(str).reverse().toString());
outWriter.write("\r\n");
}
}
}catch(IOException e){
System.out.println("Handle client error");
}
}
public void run(){
handleClient();
}
private Socket client;
}
private int port = 3000;
private boolean runFlag = true;
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MultiThreadServer {
//啟動服務(wù)端監(jiān)聽
public void start(){
try{
ServerSocket server = new ServerSocket(port);
Socket client = null;
while(runFlag){
client = server.accept();
System.out.println("accept client " + client.getInetAddress().getHostAddress());
new Thread(new ClientHandle(client)).start();
}
server.close();
}catch(IOException e){
System.out.println("start error");
}
}
public static void main(String[] args){
MultiThreadServer s = new MultiThreadServer();
s.start();
}
class ClientHandle implements Runnable{
public ClientHandle(Socket s){
this.client = s;
}
//處理客戶端請求
public void handleClient(){
try{
BufferedReader inReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedWriter outWriter = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
while(true){
outWriter.write("please input String->");
outWriter.flush();
String str = inReader.readLine();
if(str.equalsIgnoreCase("quit")){
outWriter.write("quit ok");
client.close();
break;
}
else{
outWriter.write("reulst is :" + new StringBuffer(str).reverse().toString());
outWriter.write("\r\n");
}
}
}catch(IOException e){
System.out.println("Handle client error");
}
}
public void run(){
handleClient();
}
private Socket client;
}
private int port = 3000;
private boolean runFlag = true;
}