项目是一个物资计量系统,大致的1:java的做的数据的采集和处理,业务逻辑和报表,页面展现.2:其他的厂家提供的设备上数据的发送有厂家的设备自带
现在跟各个厂家通讯 采用socket通讯.
第一个版的读取:
BufferedReader in; ServerSocket ss = new ServerSocket(4002); Socket socket = ss.accept(); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String line = in.read(); System.out.println(line);
这种读取,在java间通讯没有问题,但是与其他的语言通讯会出现问题,因为其他的通讯末尾是没有/n的,股出现一个不能结尾的管道等待的问题.
问题找到后,一个通用的版本出现啦:
public class Server { private int port; public Server(int port){ this.port=port; start(); } //将从客户端收到的信息转化为大写的 public String process(String line){ return line.toUpperCase(); } public void start(){ try{ //根据端口创建套接字 ServerSocket myscoket=new ServerSocket(port); //显示连接信息 System.out.println("服务器启动完成,监听端口在"+port); System.out.println("正在等待客户连接........."); //挂起等待客户的请求 Socket connection=myscoket.accept(); //测试 System.out.println("客户发来连接请求........."); //获取读取客户端的数据流 InputStream is = connection.getInputStream(); //获取写往客户端的数据输出流,true表示自动刷新 PrintWriter out=new PrintWriter(connection.getOutputStream(),true); //向客户发送欢迎的信息 out.println("您好,服务器连接成功!"); out.println("输入bye断开与服务器的连接"); boolean done=false; int i = 0; while(!done){ //读取客户端的内容 i++; System.out.println(i); byte[] b = new byte[8]; int length = is.read(b); String str = new String(b,0,length); // 收到的字符串 System.out.println(String.valueOf(str)); } //关闭通信 connection.close(); }catch(Exception e){ System.out.println(e); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub try{ //获得端口号 Server myserver=new Server(4001); }catch(Exception e){ System.out.println(e); } } }