java Socket 编程实例
生活随笔
收集整理的這篇文章主要介紹了
java Socket 编程实例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、客戶(hù)端
? ? ? ??
package net.socketTest;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Reader; import java.io.Writer; import java.net.Socket; import java.net.UnknownHostException; import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class MultiThreadClient_jiaohu {public static void main(String[] args) throws InterruptedException {int numTasks = 2120;ExecutorService exec = Executors.newCachedThreadPool();for (int i = 0; i < numTasks; i++) {Thread.sleep(5L);exec.execute(createTask(i));}}// 定義一個(gè)簡(jiǎn)單的任務(wù)private static Runnable createTask(final int taskID) {return new Runnable() {private Socket socket = null;private int port=8821;public void run() {Socket clinet = null;int task_ID=taskID;try {clinet = new Socket("192.168.252.155",port);} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}Reader reader = null;try {reader = new InputStreamReader(clinet.getInputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}BufferedReader clinetin=new BufferedReader(reader);Writer writer = null;try {writer = new OutputStreamWriter(clinet.getOutputStream());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}PrintWriter clientout=new PrintWriter(writer);int i=0;while(true){i++;try {int ran=new Random().nextInt(20*60)+1;Thread.sleep(ran*1000L);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}String str=" 線程編號(hào):"+task_ID;clientout.println(str);clientout.flush();String newStr = null;try {newStr = clinetin.readLine();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(" --:"+newStr);if(i>=100000)break;}try {clinetin.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}clientout.close();System.out.println(" ===發(fā)送結(jié)束===");}};} }二、服務(wù)端
?
package net.socketTest;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.*; import java.util.concurrent.*;public class SocketServer {private int port=8821;private ServerSocket serverSocket;private ExecutorService executorService;//線程池private final int POOL_SIZE=2200;//單個(gè)CPU線程池大小 也是最大連接數(shù),否則超出此數(shù)量的連接數(shù)無(wú)法連上private int count=0;public SocketServer() throws IOException{serverSocket=new ServerSocket(port);//Runtime的availableProcessor()方法返回當(dāng)前系統(tǒng)的CPU數(shù)目.executorService=Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()*POOL_SIZE);System.out.println("start Socket Server at port: "+port);}public void start(){while(true){Socket socket=null;try {//接收客戶(hù)連接,只要客戶(hù)進(jìn)行了連接,就會(huì)觸發(fā)accept();從而建立連接socket=serverSocket.accept();count++;System.out.println(" "+count);executorService.execute(new Handler(socket));} catch (Exception e) {e.printStackTrace();}}}public static void main(String[] args) throws IOException {new SocketServer().start();}}class Handler implements Runnable{private Socket socket;public Handler(Socket socket){this.socket=socket;}private PrintWriter getWriter(Socket socket) throws IOException{OutputStream socketOut=socket.getOutputStream();return new PrintWriter(socketOut,true);}private BufferedReader getReader(Socket socket) throws IOException{InputStream socketIn=socket.getInputStream();return new BufferedReader(new InputStreamReader(socketIn));}public void run(){try {System.out.println("New connection accepted "+socket.getInetAddress()+":"+socket.getPort());BufferedReader br=getReader(socket);PrintWriter pw=getWriter(socket);String msg=null;while((msg=br.readLine())!=null){// System.out.println(msg);pw.println(msg);}} catch (IOException e) {e.printStackTrace();}finally{try {if(socket!=null)socket.close();} catch (IOException e) {e.printStackTrace();}}} }總結(jié)
以上是生活随笔為你收集整理的java Socket 编程实例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SQL创建触发器以及触发器的使用实例+详
- 下一篇: 16个超牛逼的HTML5和JavaScr