socket 服务端一直等待客户端
public void threadServer() {
// TODO Auto-generated method stub
class ServerThread extends Thread {
Socket socket = null;
public ServerThread(Socket socket) {
this.socket = socket;
}
public void run() {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
// 4.获取输入流,并读取服务器端的响应信息
inputStream = socket.getInputStream();
//封装数据写给服务器端
outputStream = socket.getOutputStream();
// 创建文件输出流,方便从socket读取的数据写入文件
byte[] buf = new byte[1024];
int readb = 0;
while ((readb = inputStream.read(buf)) != -1) {
String str = new String(buf, 0, readb, "GBK");
System.out.println("接收数据:" + str);
// 数据处理
String result = "测试";
// 转换编码方式
byte[] b = result.getBytes("GBK");
long len = b.length;
String length = String.format("%05d", len);
result = length + result;
byte[] bt = result.getBytes("GBK");
System.out.println("写入数据:" + result);
//写数据
outputStream.write(bt);
outputStream.flush();
}
System.out.println("服务器端接受完毕!");
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
inputStream.close();
outputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
try {
//1.创建服务器端ServerSocket对象,指定端口
ServerSocket serverSocket = new ServerSocket(SysConstant.serverPort);
Socket socket = null;
System.out.println("服务器等待客户端的连接");
//2.调用accept()监听(即等待客户端的连接)
while (true) {
socket = serverSocket.accept();
//创建一个新线程
ServerThread serverThread = new ServerThread(socket);
serverThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Document 创建xml报文
/**
* 返回公共报文
*
* @return
*/
public static String createElement(JSONObject obj) {
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
//设置编码格式
transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");
// 创建解析工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
document.setXmlStandalone(true);
Element parent = document.createElement("ONEKEY");
document.appendChild(parent);
Element HEAD = document.createElement("HEAD");
parent.appendChild(HEAD);
// 返回代码
Element RESULT_CODE = document.createElement("RESULT_CODE");
RESULT_CODE.setTextContent("ok");
// 返回信息
Element RESULT_MSG = document.createElement("RESULT_MSG");
RESULT_MSG.setTextContent("内容");
HEAD.appendChild(RESULT_CODE);
HEAD.appendChild(RESULT_MSG);
DOMSource source = new DOMSource(document);
transformer.transform(source, new StreamResult(bos));
String result = bos.toString("GBK");
return result ;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
因公司需求与中行对接写的记录一下