通过URLConnection进行远程连接(教程)

通过URLConnection进行远程连接(教程)

这个例子很简单,就两个文件哦:)
服务器端文件:DemoService
客户端文件:DemoTestHttpURLConnection

废话不多说,很简单服务器文件是个标准的HttpServlet文件!

代码:

import  java.io.BufferedInputStream;
import  java.io.IOException;
import  java.io.ObjectInputStream;
import  java.io.ObjectOutputStream;

import  javax.servlet.ServletException;
import  javax.servlet.http.HttpServlet;
import  javax.servlet.http.HttpServletRequest;
import  javax.servlet.http.HttpServletResponse;

public   class  DemoService  extends  HttpServlet ... {
    
private static final long serialVersionUID = 1589233260870765446L;

    @Override
    
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            
throws ServletException, IOException ...{
        
this.doPost(req, resp);
    }


    @Override
    
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            
throws ServletException, IOException ...{
        
        
// 从请求中获取客户端传入的流信息
        ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(req.getInputStream()));
        
try ...{
            
// 获取客户端传来的信息对象        
            System.out.println((String)in.readObject());            
            in.close();
            
            
// 将信息返回给客户端
            ObjectOutputStream out = new ObjectOutputStream(resp.getOutputStream());
            out.flush();
            
            
// 将信息对象传给客户端 
            out.writeObject("给客户端返回的结果,就是我啦!");
            out.close();
            
        }
 catch (Exception e) ...{
            e.printStackTrace();
        }

        
    }

    
}

 

客户端程序更简单啦,就是个简单的测试类

代码:

import  java.io.InputStream;
import  java.io.ObjectInputStream;
import  java.io.ObjectOutputStream;
import  java.io.OutputStream;
import  java.net.URL;
import  java.net.URLConnection;

public   class  DemoTestHttpURLConnection  ... {
    
public static void main(String[] args) throws Exception ...{
        
        
// 传给对方参数,也可以是对象(此处的对象必须是可序列化的对象)
        String sMessage = "客户端传入到服务区点数据了!" + DemoTestHttpURLConnection.class.getName();
        
        
// 服务器地址
        URL url = new URL("http://127.0.0.1:8088/ServletServiceDemo/demoService");
        
        
// 打开地址
        URLConnection con = url.openConnection();
        
        
// 指示应用程序要从 URL 连接读取数据
        con.setDoInput(true);
        
        
// 指示应用程序要将数据写入 URL 连接
        con.setDoOutput(true);
        
        
// 设置一般请求属性 (不设置也没什么关系 :)
        con.setRequestProperty("Content-type""application/octest-stream");
                
        
// 从Url连接中获取输出流 (即:将该流传给服务器)
        OutputStream out = con.getOutputStream();        
        ObjectOutputStream objStream 
= new ObjectOutputStream(out);
        
        
// 将之前设置的好的对象传入给服务器
        objStream.writeObject(sMessage);
        objStream.flush();
        objStream.close();
        out.close();
                
        
// 从Url连接中获取输入流信息 (即:服务器的输出流信息)
        InputStream in = con.getInputStream();        
        ObjectInputStream back 
= new ObjectInputStream(in);
        
        
// 得到服务器对象信息!
        System.out.println((String)back.readObject());
        
        back.close();
        in.close();
    }

}

 

偶们先部署服务器(到处都有文章不废话了),然后再运行测试类。看到什么了?呵呵

简单吧!!!

你可能感兴趣的:(java,应用服务器,.net,servlet)