socket同步连接
来源:互联网 发布:nodejs 获取json key 编辑:程序博客网 时间:2024/06/05 18:37
package socket;
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 MultiThreadServer {
private int port=8821;
private ServerSocket serverSocket;
private ExecutorService executorService;//线程池
private final int POOL_SIZE=10;//单个CPU线程池大小
public MultiThreadServer() 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 MultiThreadServer().service();
}
}
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 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);
PrintWriter pw=getWriter(socket);
String msg=null;
while((msg=br.readLine())!=null){
System.out.println(msg);
pw.println(echo(msg));
if(msg.equals("bye"))
break;
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
if(socket!=null)
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
- socket同步连接
- boost asio库 同步socket连接示例
- 使用socket封装的同步连接TCP类
- socket 连接
- Socket连接
- Socket连接
- 异步SOCKET与同步SOCKET
- Android端与PC端同步绘画板(一)-使用Socket建立连接
- Socket编程 (连接,发送消息) (Tcp、Udp) ,这个是同步,跟上一篇差不多
- Socket 同步与异步
- c# SOCKET同步通信
- socket同步通讯过程
- socket学习 同步
- 同步与异步Socket
- socket同步与异步
- IOS Socket 同步方式
- 同步与异步Socket
- Socket同步异步通信
- 算法关系梳理
- JAVA中NIO,BIO,AIO的理解
- Application之属性restoreAnyVersion
- mysql安装常见问题(系统找不到指定的文件、发生系统错误 1067 进程意外终止)
- 图像放缩之双线性内插值
- socket同步连接
- 线程、同步代码块、同步函数、死锁
- 获取js自身路径的方法
- 实现一个非阻塞IO的服务器
- 键盘快捷键
- tomcat虚拟主机配置方法详解
- jQuery.slide1.3x
- ios图片截取
- 如何正确安装mySQL,本人折腾一天终于搞定,分享给大家