基于socket通信传递xml(jdom生成)的Demo

来源:互联网 发布:万隆版单片机课后答案 编辑:程序博客网 时间:2024/05/22 08:11
//jdom生成xml的方法如下:
package socketXmlDemo.socketXmlDemo.createXml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.jdom.Document;import org.jdom.Element;import org.jdom.output.Format;import org.jdom.output.XMLOutputter;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class ResultXml {//slf4j的logprivate final static Logger logger = LoggerFactory.getLogger(ResultXml.class);/** * jdom生成xml * @throws FileNotFoundException * @throws IOException */public static void raiseXml() throws FileNotFoundException, IOException {// 生成xml文件Element root = new Element("doc");root.setAttribute("xmlcolonlang", "ja");root.setAttribute("xmlnscolonfo", "http://www.w3.org/1999/XSL/Format");Document Doc = new Document(root);Element elements = new Element("reckon_pe").setText("helloworld");// 报告截止日期(页面最下方日期)root.addContent(elements);XMLOutputter XMLOut = new XMLOutputter();XMLOut.setFormat(Format.getCompactFormat().setEncoding("UTF-8"));String xmlPath = "c:\\testSocket.xml";//生成的xml保存的路勁,可用配置文件管理FileOutputStream fos = null;try{fos =new FileOutputStream(new File(xmlPath));logger.error("正在创建文件路径!");XMLOut.output(Doc, new FileOutputStream(xmlPath));}catch(Exception e){}finally{fos.close();}}public static void main(String[] args) throws Exception {raiseXml();}} 
//socket监听消息的方法如下:
package socketXmlDemo.socketXmlDemo.sendXml;import java.net.*;import java.io.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class ServerTcpListener implements Runnable {//slf4j的logprivate final static Logger logger = LoggerFactory.getLogger(ServerTcpListener.class);    public static void main(String[] args) {        try {            final ServerSocket server = new ServerSocket(ClientTcpSend.port);            Thread th = new Thread(new Runnable() {                public void run() {                    while (true) {                        try {                            logger.info("开始监听...");                            Socket socket = server.accept();                            logger.info("有链接");                            receiveFile(socket);                        } catch (Exception e) {                        }                    }                }            });            th.run(); //启动线程运行        } catch (Exception e) {            e.printStackTrace();        }    }    public void run() {    }    public static void receiveFile(Socket socket) {        byte[] inputByte = null;        int length = 0;        DataInputStream dis = null;        FileOutputStream fos = null;        try {            try {                dis = new DataInputStream(socket.getInputStream());                fos = new FileOutputStream(new File("e:\\testSocket.xml"));                inputByte = new byte[1024*4];                logger.info("开始接收数据...");                while ((length = dis.read(inputByte, 0, inputByte.length)) > 0) {                    fos.write(inputByte, 0, length);                    fos.flush();                }                logger.info("完成接收");            } finally {                if (fos != null)                    fos.close();                if (dis != null)                    dis.close();                if (socket != null)                    socket.close();            }        } catch (Exception e) {        }    }}
server端方法如下:
package socketXmlDemo.socketXmlDemo.sendXml;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.net.InetSocketAddress;import java.net.Socket;public class ClientTcpSend {        public static String clientip = "127.0.0.1";    public static int port = 33456;    public static void main(String[] args) {        int length = 0;        byte[] sendBytes = null;        Socket socket = null;        DataOutputStream dos = null;        FileInputStream fis = null;        try {            try {                socket = new Socket();                socket.connect(new InetSocketAddress(clientip, port),30 * 1000);                dos = new DataOutputStream(socket.getOutputStream());                File file = new File("c:\\testSocket.xml");                fis = new FileInputStream(file);                sendBytes = new byte[1024*4];                while ((length = fis.read(sendBytes, 0, sendBytes.length)) > 0) {                    dos.write(sendBytes, 0, length);                    dos.flush();                }            } finally {                if (dos != null)                    dos.close();                if (fis != null)                    fis.close();                if (socket != null)                    socket.close();            }        } catch (Exception e) {            e.printStackTrace();        }    }}
pom.xml配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>socketXmlDemo</groupId>  <artifactId>socketXmlDemo</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>socketXmlDemo</name>  <url>http://maven.apache.org</url>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>        <!-- 生成xml使用 --><dependency>    <groupId>org.jdom</groupId>    <artifactId>jdom</artifactId>    <version>1.1.3</version></dependency>
<!-- slf4j --> <dependency>            <groupId>ch.qos.logback</groupId>            <artifactId>logback-core</artifactId>            <version>0.9.29</version>        </dependency>        <dependency>            <groupId>ch.qos.logback</groupId>            <artifactId>logback-classic</artifactId>            <version>0.9.29</version>        </dependency>        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>slf4j-api</artifactId>            <version>1.6.1</version>        </dependency>        <dependency>            <groupId>org.slf4j</groupId>            <artifactId>log4j-over-slf4j</artifactId>            <version>1.6.1</version>        </dependency>  </dependencies></project>
0 0
原创粉丝点击