一个关于线程池的问题。。大家帮看看代码
用socket做个通讯 这个是服务端 为什么就接受不到客户端发送的数据呢???
大家帮我写一个客户端吧。。。。。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.*;
public class imServer{
private int port=8000;
private ServerSocket server;
private ExecutorService esc;
private int pool_size=4;
public imServer() throws Exception{
server =new ServerSocket(port);
esc=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*pool_size);
}
public void server() {
Socket sc=null;
while(true){
try {
sc=server.accept();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
esc.execute(new Handler(sc));
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String s[]){
try {
new imServer().server();
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Handler implements Runnable{
private Socket sc=null;
static String msg=null;
DataInputStream read;
static DataOutputStream write;
public Handler( Socket sc) throws IOException{
this.sc=sc;
read=getReader(sc);
write=getWriter(sc);
}
public void run(){
try{
System.out.print(1230);
Thread.sleep(1000);
while(true){
msg=read.readUTF();
System.out.print(msg);
new Thread(new write()).start();
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(sc!=null)sc.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
public static void send(){
if(!msg.equals(null)){
try {
write.writeUTF(msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private DataOutputStream getWriter(Socket sc) throws IOException{
return new DataOutputStream(
new BufferedOutputStream(sc.getOutputStream()));
}
private DataInputStream getReader(Socket sc) throws IOException{
return new DataInputStream(new BufferedInputStream(sc
.getInputStream()));
}
}
class write implements Runnable{
public void run(){
Handler.send();
}
}