/**
*
*/
package com.icfcc.cpk.channel;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import org.apache.log4j.Logger;
import org.w3c.tools.codec.Base64Decoder;
import org.w3c.tools.codec.Base64Encoder;
import org.w3c.tools.codec.Base64FormatException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import com.sun.xml.messaging.saaj.packaging.mime.util.BASE64EncoderStream;
/**
*@Project: icfcc
*@Author: Mark Gao
*@Date: 2011-11-23
*@Copyright: 2011 www.icfcc.com Inc. All rights reserved.
*/
public class TuxedoChannel {
private static Logger logger = Logger.getLogger(TuxedoChannel.class);
Socket socket = null;
DataInputStream inStream = null;
DataOutputStream outStream = null;
String IP;
int port;
public static void main(String[] args) throws UnknownHostException, IOException {
TuxedoChannel.sendXmlDataToTuxedoChannel("10.1.10.10",14111,"test2");
//TuxedoChannel.sendXmlDataToTuxedoChannel("test2");
}
public TuxedoChannel(String _IP,int _port){
this.IP = _IP;
this.port = _port;
try {
init(IP, port);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
void init(String IP,int port) throws Exception {
socket = new Socket(IP, port);
inStream = new DataInputStream(socket.getInputStream());
outStream = new DataOutputStream(socket.getOutputStream());
// socket.setSoTimeout(3000);
}
public void sendFileToTuxedoChannel(File file) throws IOException{
String msg = "";
BufferedReader br = new BufferedReader(new FileReader(file));
StringBuffer buffer = new StringBuffer();
while((msg = br.readLine())!=null){
buffer.append(msg);
}
msg = buffer.toString();
Socket s = new Socket(IP,port);
if(s == null){
logger.info("connect error from website:icfcc");
}
InputStream Is = s.getInputStream();
OutputStream Os = s.getOutputStream();
PrintStream PS = new PrintStream(Os);
PS.println(msg);
PS.close();
Is.close();
Os.close();
}
public static String sendXmlDataToTuxedoChannel(String IP,int port,String xmlData) throws UnknownHostException, IOException{
logger.info("send req to tuxedo --------------------");
Socket s = new Socket(IP,port);
if(s == null){
logger.info("connect error from website:icfcc");
}
InputStream in = s.getInputStream();
OutputStream Os = s.getOutputStream();
PrintStream PS = new PrintStream(Os);
PS.println(xmlData.replace("\n", "").getBytes("utf-8"));
/*String baseStr = null;
baseStr = new BASE64Encoder().encodeBuffer(xmlData.getBytes("utf-8"));
System.out.println("baseStr="+baseStr);*/
//PS.println(new String(xmlData.replace("\n", "").getBytes("utf-8")));
//PS.println(baseStr);
//PS.println(xmlData.replace("\n", ""));
PS.println("\n");
PS.println("!");
StringBuffer buffer = new StringBuffer();
logger.info("start reader");
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String acceptStr = null;
while(("!".equals((acceptStr = reader.readLine())))==false&&(acceptStr!=null)){
//while((acceptStr = reader.readLine())!=null){
logger.info("reading---"+new String(acceptStr.getBytes("utf-8"),"utf-8"));
// logger.info("reading---"+new String(new BASE64Decoder().decodeBuffer(acceptStr),"utf-8"));
buffer.append(acceptStr.getBytes("utf-8"));
//buffer.append(new String(acceptStr.getBytes("utf-8")));
//buffer.append(new String(new BASE64Decoder().decodeBuffer(acceptStr),"utf-8"));
//buffer.append(acceptStr);
/*byte[] buff = new BASE64Decoder().decodeBuffer(new ByteArrayInputStream(acceptStr.getBytes("utf-8")) );
String str = new String(buff,0,buff.length,"utf-8") ;
logger.info("str="+str);
buffer.append(str);*/
}
acceptStr = buffer.toString();
System.out.println("Client accept: " + acceptStr);
//System.out.println("Client accept: " + acceptStr);
in.close();
Os.close();
return acceptStr;
}
/*public static void sendXmlDataToTuxedoChannel(String xmlData) throws UnknownHostException, IOException{
logger.info("send req to tuxedo --------------------");
Socket s = new Socket("10.1.10.10",14111);
if(s == null){
logger.info("connect error from website:icfcc");
}
InputStream Is = s.getInputStream();
OutputStream Os = s.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintStream PS = new PrintStream(Os);
PS.println(xmlData);
OutputStreamWriter osw = new OutputStreamWriter(Os);
osw.write(xmlData);
//PS.flush();
Is.close();
Os.close();
//return acceptStr;
}
*/
}
/**
*
*/
package com.icfcc.cpk.listener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
*@Project: icfcc
*@Author: Mark Gao
*
*@Date: 2011-11-24
*@Copyright: 2011 www.icfcc.com Inc. All rights reserved.
*/
public class TuxedoListener implements Runnable {
ServerSocket serverSocket = null;
Socket socket = null;
DataInputStream inStream = null;
DataOutputStream outStream = null;
InputStream in = null;
BufferedReader br = null;
private ExecutorService executorService;
private final int POOL_SIZE = 100;
public static void main(String[] args) {
TuxedoListener listener = new TuxedoListener();
new Thread(listener).start();
// listener.waitForClient();
}
public TuxedoListener() {
try {
serverSocket = new ServerSocket(14111);
executorService = Executors.newFixedThreadPool(Runtime.getRuntime()
.availableProcessors()
* POOL_SIZE);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* (non-Javadoc)
*
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
while (true) {
Socket socket = null;
try {
// 鎺ユ敹瀹㈡埛杩炴帴,鍙瀹㈡埛杩涜浜嗚繛鎺?灏变細瑙﹀彂accept();浠庤?寤虹珛杩炴帴
socket = serverSocket.accept();
executorService.execute(new Handler(socket));
} catch (Exception e) {
e.printStackTrace();
}
}
}
static class Handler implements Runnable {
private Socket socket;
public static int id = 0;
public String sourcestr;
public String deststr;
public static Object lock = new Object();
public Handler(Socket socket) {
this.socket = socket;
}
/*
* (non-Javadoc)
*
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("New connection accepted "
+ socket.getInetAddress() + ":" + socket.getPort());
InputStream in = null;
OutputStream out = null;
try {
in = socket.getInputStream();
out = socket.getOutputStream();
BufferedReader reader = new BufferedReader(
new InputStreamReader(in));
String readerMsg = null;
StringBuffer outPutMsg = new StringBuffer();
PrintStream PS = new PrintStream(out);
while (("!".equals((readerMsg = reader.readLine()))) == false) {
System.out.println(new String(readerMsg.getBytes("utf-8")));
outPutMsg.append(new String(readerMsg.getBytes("utf-8")));
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("start write to client");
String putStr = outPutMsg.toString().replace("\n", "");
byte[] b = putStr.getBytes();
for (int i = 0; i < b.length; i++) {
System.out.print(b[i]);
}
PS.println(new String(putStr.getBytes("utf-8")));
PS.println("\n");
PS.println("!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}