最近做个项目遇到个问题,请教下各位?
项目功能是采集数据,前端大概有100个采集点,采集设备主动发送数据包,每十五分钟一个心跳包,再十五分钟一个数据包,也就是说服务器半小时读取一次数据。服务器现有三个端口,不排除以后增加的可能性。我在服务器端开启多个线程接收数据包,我想针对每一个采集设备开一个线程,非一个数据包一个线程,我写了段代码,不知道可对,麻烦帮我看看
线程启动,args用来保存端口号,默认采用8001
//处理端口号冲突
if (args.length < 1 ) {
ss = new ServerSocket(8001);
} else {
ss = new ServerSocket(Integer.parseInt(args[0]));
}
boolean bRunning = true;
while(bRunning){
Socket s= ss.accept();
new Thread(new serverStart(s)).start();
}
线程启动: private Socket s = null;
InputStream ips;
OutputStream ops;
private volatile boolean running = true;
public serverStart(Socket s) throws IOException {
this.s = s;
ips = s.getInputStream();
ops = s.getOutputStream();
}
public void run(){
while(running){
try {
Message m = read();
System.out.println("收到信息");
} catch (Exception e) {
e.printStackTrace();
}
}
try {
if(s!=null)s.close();
} catch (IOException e) {
}
} 多线程服务器socketjava数据采集
项目功能是采集数据,前端大概有100个采集点,采集设备主动发送数据包,每十五分钟一个心跳包,再十五分钟一个数据包,也就是说服务器半小时读取一次数据。服务器现有三个端口,不排除以后增加的可能性。我在服务器端开启多个线程接收数据包,我想针对每一个采集设备开一个线程,非一个数据包一个线程,我写了段代码,不知道可对,麻烦帮我看看
线程启动,args用来保存端口号,默认采用8001
//处理端口号冲突
if (args.length < 1 ) {
ss = new ServerSocket(8001);
} else {
ss = new ServerSocket(Integer.parseInt(args[0]));
}
boolean bRunning = true;
while(bRunning){
Socket s= ss.accept();
new Thread(new serverStart(s)).start();
}
线程启动: private Socket s = null;
InputStream ips;
OutputStream ops;
private volatile boolean running = true;
public serverStart(Socket s) throws IOException {
this.s = s;
ips = s.getInputStream();
ops = s.getOutputStream();
}
public void run(){
while(running){
try {
Message m = read();
System.out.println("收到信息");
} catch (Exception e) {
e.printStackTrace();
}
}
try {
if(s!=null)s.close();
} catch (IOException e) {
}
} 多线程服务器socketjava数据采集
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货