关于客户端和服务端通信方式的一些实验

来源:互联网 发布:sql select as where 编辑:程序博客网 时间:2024/05/21 14:03

作者:elle   日期:2007.09.19

上次对登入功能和面向对象的一些内容做了点小节。

这几天事情不多,早上用些时间写点最近做的一些内容。现在还是以登入功能为基础来说明手机客户端和服务器间的交互。

 

⇒⇒⇒

之前客户端要发送参数到服务器是通过设置请求头来实现,例如:

connection.setRequestProperty("uname",userName);

服务端接收参数如下:

String username = request.getHeader("uname");

这样就可以进行简单的交互了。

 

 

⇒⇒⇒

最近有看一些关于图片上传的资料,就做了些关于数据流传输数据的实验。现在以上次的登入功能为基础,把传递的参数改为数据流的形式进行传输。

客户端主要代码如下:

   dos = conn.openDataOutputStream();//dos为DataOutputStream对象,conn为HttpConnection对象
       dos.writeUTF(City); //City是一个字符串                                 
   dos.writeUTF(Road);//Road是一个字符串  
   dos.flush();
   dos.close();

 

对应的服务端的接收代码块为:

 

InputStream is = request.getInputStream();
        DataInputStream dis 
= new DataInputStream(is);

        OutputStream os 
= response.getOutputStream();
        DataOutputStream dos 
= new DataOutputStream(os);
        
try{
            String City 
= dis.readUTF();
            String Road 
= dis.readUTF();
            System.out.println(City 
+ "   " + Road + "******");
            is.close();
            dis.close();

            String responseStr 
= "true";
            dos.writeUTF(responseStr);
            System.out.println(responseStr);
            os.close();
            dos.close();

        }
 catch (Exception ex) {
            ex.printStackTrace();
        }

 

 这样客户端和服务器的通信就基本完成了,当然在实际的项目中对多媒体文件的传输要复杂的多,现在做的只是给初学者一个大的轮廓(偶也只是初学者而已,有什么说得不准的请大家多指点哈)。

这边想到一个问题,比如服务端多写个语句:String Anthor = dis.readUTF();则会出现错误。很明显,是因为客户端的输出流中并没有第三个字符串,那同一个数据流中是如何区分不同的数据,不同数据间有什么标志位呢?

这个我还不明白,有哪位有这方面的经验的还请多指教啊。

先写这么多吧,吃饭了。