flash socket 聊天(二)

简单的MyServer .java

  1. package com.cn.socket;   
  2.   
  3. import java.io.*;   
  4. import java.net.*;   
  5. public class MyServer   
  6. {   
  7. public static void main (String[] args) throws IOException   
  8. {   
  9.      ServerSocket server=new ServerSocket(4567);   
  10.      Socket client=server.accept();   
  11.      BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));   
  12.      PrintWriter out=new PrintWriter(client.getOutputStream());   
  13.     while(true)   
  14.      {   
  15.          String str=in.readLine();   
  16.          System.out.println(str);   
  17.          out.println("你 说:   " + str + "/n");   
  18.          out.flush();   
  19.     if(str.equals("end"))   
  20.     break;   
  21.      }   
  22.      client.close();   
  23.      }   
  24. }  

这个服务器端只能连接一段时间后自动停止。

服务器端代码二:

  1. package com.cn.socket;   
  2.   
  3. import java.io.IOException;   
  4. import java.net.*;   
  5. import java.util.concurrent.*;   
  6.      
  7. public class MultiThreadServer {   
  8.     private int port=4567;   
  9.     private ServerSocket serverSocket;   
  10.     private ExecutorService executorService;//线程池   
  11.     private final int POOL_SIZE=10;//单个CPU线程池大小   
  12.         
  13.     public MultiThreadServer() throws IOException{   
  14.          serverSocket=new ServerSocket(port);   
  15.         //Runtime的availableProcessor()方法返回当前系统的CPU数目.   
  16.          executorService=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE);   
  17.          System.out.println("服务器启动");   
  18.      }   
  19.         
  20.     public void service(){   
  21.         while(true){   
  22.              Socket socket=null;   
  23.             try {   
  24.                 //接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接   
  25.                  socket=serverSocket.accept();   
  26.                  executorService.execute(new Handler(socket));   
  27.                     
  28.              } catch (Exception e) {   
  29.                  e.printStackTrace();   
  30.              }   
  31.          }   
  32.      }   
  33.         
  34.     public static void main(String[] args) throws IOException {   
  35.         new MultiThreadServer().service();   
  36.      }   
  37.      
  38. }    

  1. package com.cn.socket;   
  2. import java.io.BufferedReader;   
  3. import java.io.IOException;   
  4. import java.io.InputStream;   
  5. import java.io.InputStreamReader;   
  6. import java.io.OutputStream;   
  7. import java.io.PrintWriter;   
  8. import java.net.*;   
  9.   
  10. public class Handler implements Runnable{   
  11.     private Socket socket;   
  12.     public Handler(Socket socket){   
  13.         this.socket=socket;   
  14.      }   
  15.     private PrintWriter getWriter(Socket socket) throws IOException{   
  16.          OutputStream socketOut=socket.getOutputStream();   
  17.         return new PrintWriter(socketOut,true);   
  18.      }   
  19.     private BufferedReader getReader(Socket socket) throws IOException{   
  20.          InputStream socketIn=socket.getInputStream();   
  21.         return new BufferedReader(new InputStreamReader(socketIn));   
  22.      }   
  23.     public String echo(String msg){   
  24.         return "echo:"+msg;   
  25.      }   
  26.     public void run(){   
  27.         try {   
  28.              System.out.println("New connection accepted "+socket.getInetAddress()+":"+socket.getPort());   
  29.              BufferedReader br=getReader(socket);   
  30.              PrintWriter pw=getWriter(socket);   
  31.              String msg=null;   
  32.             while((msg=br.readLine())!=null){   
  33.                  System.out.println(msg);   
  34.                  pw.println(echo(msg));   
  35.                 if(msg.equals("bye"))   
  36.                     break;   
  37.              }   
  38.          } catch (IOException e) {   
  39.              e.printStackTrace();   
  40.          }finally{   
  41.             try {   
  42.                 if(socket!=null)   
  43.                      socket.close();   
  44.              } catch (IOException e) {   
  45.                  e.printStackTrace();   
  46.              }   
  47.          }   
  48.      }   
  49. }  

服务器二建立了线程数量,并且可以不断进行端口连接。

这两中服务器选其一就ok。

 

注:我得crossdomain.xml文件内容:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值