java socket服务器端与其他语言的通讯

首先说下背景:
    项目是一个物资计量系统,大致的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);
			}
	    }
}


猜你喜欢

转载自aa8945163.iteye.com/blog/1869894