socket收发数据

/**
 * 
 */
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();
			}

			
		}

	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值