免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2441 | 回复: 0
打印 上一主题 下一主题

使用java的xmlsocket和客户端传递xml文件的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-16 05:29 |只看该作者 |倒序浏览
我尝试做java和flash通过xmlsocket进行xml文件的通讯,下边是我的一个测试程序,发现xml文件不能正常的被socket传递到客户端.我又使用了另外一种方法,第二种方法前半部分和下边的程序一样,都是生成scoket,进行数据查询,进行xml的Dom对象的封装,然后将Dom对象生产本地的xml文件,将xml文件转化为字节流进行传输,就是普通的java字符流的传输方法,第二种方法考虑到在本地生产xml是没有必要的操作,所以应该不是最优的方法。
第一种方法直接传递dom对象是否可行?期盼牛哥们指点!:wink:

package cn.talk.xmlsocket;

import java.io.*;
import java.net.*;
import java.sql.ResultSet;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class TalkServer
{
        public static void main(String args[])
        {
                try
                {
                        ServerSocket server=null;
                        try
                        {
                                server=new ServerSocket(4800);
                        }
                        catch(Exception e)
                        {
                                System.out.println("can not listen to :"+e);
                        }
                        Socket socket=null;
                        try
                        {
                                socket=server.accept();
                        }
                        catch(Exception e)
                        {
                                System.out.println("Error:"+e);
                        }
                        和客户端的flash程序建立socket
               
                        String line;
                        DataOutputStream out=new DataOutputStream(socket.getOutputStream());
                        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
                       
                        System.out.println("Client:"+is.readLine());//从客户flash端得到xml的内容
                       

                        Db dbServer=new Db();//建立数据库连接
                        ResultSet rs=null;
                       
                        Element gloriad;//建立xml对象
                        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
                        DocumentBuilder db=dbf.newDocumentBuilder();
                        Document doc=db.newDocument();
                        global=doc.createElement("global";
                        try{
                                rs=dbServer.query("select * from node";
                                if(rs.next())
                                {
                                        gloriad.appendChild(doc.createTextNode(rs.getString("node_des"));
                                }
                                doc.appendChild(global);
                        rs.close();
                        }catch(Exception e){
                                System.out.println("db error";
                        }finally{
                                dbServer.closeConnect();
                        };
                       
                        try{
                                TransformerFactory tf=TransformerFactory.newInstance();
                                Transformer transformer=tf.newTransformer();
                                //transformer.transform(new DOMSource(doc),new StreamResult("test.xml");在本地生成xml文件,成功
                                transformer.transform(new DOMSource(doc),new StreamResult(out));//将xml文件传递到客户的flash端,出现错误
                        }catch(Exception e){
                                System.out.println("test Error:"+e);
                        }
                        is.close();
                       
                        os.close();
                        socket.close();
                        server.close();
                        System.out.println("close the socket by server";
                }
                catch(Exception e)
                {
                System.out.println("Error:"+e);
                }
        }
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP