多线程多端口Socket服务端客户端代码 java
来源:互联网 发布:电子标书制作软件 编辑:程序博客网 时间:2024/06/06 02:15
服务端代码
GPRSServer.java 创建服务
GPRSHander.java 调用GPRSServer来创建多线程多端口服务
**************************************************************GPRSServer.java 结束************************************************************
/*
* @(#)GPRSServer.java 1.0 11/06/14
*
* Copyright 2011 Emerson NetWork Power COM.,TLD, Inc. All rights reserved.
* Emerson PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.emerson.upscoutersrvr.protocol.communication;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.emerson.upscoutersrvr.util.CommonDAO;
/**
* <P>
* Title: GPRS服务端类
* </P>
* <P>
* Descriptoin: 主要用来接收GPRS上报上来的几种数据,包括解析监听
* </P>
* <p>
* Copyright:Copyright (c) EMERSON 2011 All rights reserved
* </p>
* <P>
* Commpany : EMERSON NEWWORK POWER
* </P>
*
* @author lumou
* @version 1.0
*
*/
public class GPRSServer extends CommonDAO implements Runnable{
//------------------------------------------------------------------私有属性
/**
* 日志
*/
private Log log = LogFactory.getLog(GPRSServer.class);
/**
* 服务器地址
*/
private String hostAdd;
/**
* 服务器端口
*/
private int hostPort;
/**
* 服务器Socket
*/
private ServerSocket server;
/**
* 管理本地线程
*/
private Thread thead;
//------------------------------------------------------------------构造函数
/**
* <P>构造线程来处理设备</P>
*
* @param areaId
* 设备服务端所需要的端口
*/
public GPRSServer(int areaId){
if(thead == null){
thead = new Thread(this);
}
try {
hostPort = areaId+11024;
server = new ServerSocket(hostPort);
log.info("端口:["+hostPort+"]的服务端创建OK,等待客户端连接……");
} catch (IOException e) {
// TODO Auto-generated catch block
log.error("端口:["+hostPort+"]的服务器启动异常……");
}
}
//------------------------------------------------------------------业务方法
/**
* 初始化程序属性
*/
public void init(){
try {
Map map = (Map) super.executeQueryForObject("CommData.selectGPRSPort", null);
hostPort = map.get("PORT_TX") == null ?
4320 : Integer.parseInt(map.get("PORT_TX").toString());
hostAdd = map.get("SMTPSERVER_TX") == null ?
"127.0.0.1" : map.get("SMTPSERVER_TX").toString();
} catch (SQLException e) {
// TODO Auto-generated catch block
log.info("初始化程序属性异常",e);
}
}
/**
* 启动本线程
*/
public void start(){
thead.start();
}
/**
* 关闭本线程
*/
public void stop(int areaId){
hostPort = areaId+11024;
thead.stop();
}
/**
* 主处理方法
*/
public void run() {
// TODO Auto-generated method stub
try {
while(true){
if(server != null){
Socket socket = server.accept();
if(socket != null){
log.info("端口:["+hostPort+"]的客户端连接成功");
BufferedReader bis = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
OutputStream osm = socket.getOutputStream();
osm.write("Server say: Hello EveryOne!".getBytes());
System.out.println(bis.readLine());
osm.close();
bis.close();
socket.close();
}
}
Thread.sleep(1000l*1);
}
//解析数据
} catch (Exception e) {
// TODO Auto-generated catch block
log.error("端口:["+hostPort+"]的服务器运行异常……",e);
} finally {
try {
if(null != server){
server.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
log.error("端口:["+hostPort+"]关闭服务器运行异常……",e);
}
}
}
/**
* <P>解析数据平且入库</P>
* @param obj
*/
public void parseData(String obj){
}
//---------------------------------------------------------getter,setter方法
}
**************************************************************GPRSServer.java 结束************************************************************
GPRSHander.java
**************************************************************GPRSHander.java ************************************************************
/*
* @(#)GPRSHander.java 1.0 11/06/22
*
* Copyright 2011 Emerson NetWork Power COM.,TLD, Inc. All rights reserved.
* Emerson PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.emerson.upscoutersrvr.protocol.communication;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.emerson.upscoutersrvr.util.CommonDAO;
/**
* <P>
* Title: GPRS线程监控类
* </P>
* <P>
* Description: 主要通过GPRS处理历史数据,实时数据,告警数据
* </P>
* <P>
* Copyright: Copyright(C) EMERSON 2011 All rights reserved
* </P>
* <P>
* Company : EMERSON NETWORK POWER COM,. TLD
* </P>
* @author G92201d
* @version 1.0 2011-06-22
*
*/
public class GPRSHander extends CommonDAO implements Runnable {
//-----------------------------------------------------------------私有属性
/**
*<P>日志</P>
*/
private Log log = LogFactory.getLog(GPRSHander.class);
/**
* 本地线程管理
*/
private Thread th;
/**
* 本地线程状态
*/
private boolean keepState;
//-----------------------------------------------------------------业务方法
/**
* <P>主处理函数</P>
*/
public void run() {
// TODO Auto-generated method stub
/*
* 查询所有站点,每个站点生成一个socket服务端
* */
try {
List list = super.executeQueryForList("CommData.selectArea", null);
if(null != list){
int count = list.size();
for (int i = 0; i < count; i++) {
Map map = (Map) list.get(i);
int areaId = Integer.parseInt(map.get("areaId") == null ?
"11024" : map.get("areaId").toString());
//创建服务线程
GPRSServer gs = new GPRSServer(areaId);//每个设备启动一个线程,启动一个端口
gs.start();
}
th.sleep(1000l*1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
keepState = true;
log.error("数据连接异常!",e);
}catch (InterruptedException e) {
// TODO Auto-generated catch block
log.error("线程休眠异常!",e);
}
}
/**
* <P>启动本线程</P>
*/
public void start(){
th = new Thread(this);
th.start();
keepState = false;
}
/**
* <P>停止本线程</P>
*/
public void stop(){
if(th != null){
th.stop();
keepState = true;
}
}
public static void main(String[] args) {
GPRSHander gh = new GPRSHander();
gh.start();
}
}
**************************************************************GPRSHander.java 结束************************************************************
客户端代码:
Client.java
**************************************************************Client.java 开始************************************************************
package com.test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Socket socket = null;
try {
int i = 0;
socket = new Socket("localhost", 11037);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
os.write("clent say: hello how are you1?".getBytes());
os.write("clent say: hello how are you2?".getBytes());
os.write("clent say: hello how are you3?".getBytes());
byte[] bt = new byte[1024];
is.read(bt, 0, bt.length);
os.close();
is.close();
System.out.println(new String(bt, 0, bt.length));
i++;
Thread.sleep(300);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
**************************************************************Client.java 结束************************************************************
- 多线程多端口Socket服务端客户端代码 java
- Java Socket多线程服务端、客户端
- Java Socket多线程服务端、客户端
- java socket编程,多线程,客户端服务端
- socket ( java ) 简单多个客户端、服务端通信(多线程)
- socket ( java ) 简单多个客户端、服务端通信(多线程)
- java socket 多线程的服务端与客户端的demo
- 简单实用的java socket服务端和客户端代码
- jav服务端-客户端Socket通信改进(多线程)
- Socket编程服务端和客户端代码
- soket多线程操作服务端及客户端代码
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- Java IO——Socket:通过多线程实现多客户端与一个服务端通信
- JAVA socket客户端和服务端 排列数字
- 基于Java Socket客户端、服务端聊天雏形
- socket ( java ) 简单客户端、服务端通信
- JAVA Socket 网络联机 客户端 服务端 笔记
- JAVA 双向SSL,SOCKET客户端/服务端
- 【MySql官方文档】mysqlimport的用法
- 迎接2012之集合和泛型(6)------队列的链式结构基本实现
- UIInterfaceOrientation 参数含义
- XML轻松学习手册(4)XML语法
- [iOS]在 iOS 平台上编译 DCMTK
- 多线程多端口Socket服务端客户端代码 java
- J2EE-JSTL标签库详解
- 数据字典(Data Dictionary)
- 计算机视觉相关资源链接
- boost bind使用指南
- 微糖
- Regex
- 静态库与动态库
- 各种常用字符串Hash函数比较