62,620
社区成员
发帖
与我相关
我的任务
分享
/** *多线程socket服务端 * @author 49 */
package socketThread;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
//import java.io.PrintWriter;
import java.net.*;
import java.util.concurrent.*;
import wcdjsrc.dbSocket;
import javax.swing.*;
public class serverSocket {
private int port=10000;
private ServerSocket serverSocket;
private ExecutorService executorService;//线程池
private final int POOL_SIZE=10;//单个CPU线程池大小
public serverSocket() throws IOException{
serverSocket=new ServerSocket(port);
//Runtime的availableProcessor()方法返回当前系统的CPU数目. executorService=Executors.newFixedThreadPool(
Runtime.getRuntime().availableProcessors()*POOL_SIZE);
System.out.println("服务器启动");
}
public void service(){
while(true){
Socket socket=null;
try {
//接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接 socket=serverSocket.accept();
executorService.execute(
new Handler(socket));
}
catch (Exception e) {
e.printStackTrace();
}
}
}
// public static void main(String[] args) throws IOException {
// new serverSocket().service();
// }
}
class Handler implements Runnable{
private Socket socket;
private dbSocket ds=null;
public Handler(Socket socket){
this.socket=socket;
}
private PrintStream getWriter(Socket socket) throws IOException{
OutputStream socketOut=socket.getOutputStream();
return new PrintStream(socketOut,true,"UTF-8");
}
private BufferedReader getReader(Socket socket) throws IOException{
InputStream socketIn=socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn,"UTF-8"));
}
public String echo(String msg){
return "echo:"+msg;
}
public void run(){
try {
System.out.println(
"New connection accepted "+socket.getInetAddress()+":"+socket.getPort()); BufferedReader br=getReader(socket);
PrintStream pw=getWriter(socket);
String msg=null; String pwwords="";
while((msg=br.readLine())!=null){
System.out.println(msg);
//接收到的数据
pwwords = "leaderusertrue";
pw.print(pwwords);
//返回给手机端的数据
// br.close();
// socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(socket!=null)
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}