TCP 연결의 두 가지 간단한 데이터 전송 방식

4215 단어
TCP는 사용자가 정의한 원시적인 바이트 흐름을 전송하는 데 적합하다. 예를 들어 바이트 흐름으로 서열화된 대상이나 구조체를 전송하고 발송자는 약속된 사용자 정의 메시지 구조에 따라 발송하며 수신자는 약속된 사용자 정의 메시지 디코딩에 따라 전송한다.전송 문자열의 일종으로 전송 구조체와 대상, 출력 문자열에 적합하다.
package com.magcomm.net;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.UnknownHostException;
import java.nio.CharBuffer;

import org.apache.http.util.EncodingUtils;

import android.util.Log;

public class SocketClient {
	private static final String tags = "com.magcomm.nmc, SocketClient";
	private Socket socket;   
	private final String SERVER_HOST_IP = "192.168.0.15";
	private final String SERVER_HOST_NAME = "mail.magcomm.cn";
	private final int SERVER_HOST_PORT = 58889;
	
    private InputStream mInputStream;                 
	private OutputStream mOutputStream; 
    private PrintWriter mPrintWriter; 
	private BufferedReader reader;
    public SocketClient()  
    {  
  
    }  
      
    public boolean connection()  
    {  
        boolean bRet = false;  
        try  
        {  
            //   
            InetAddress ia = InetAddress.getByName(SERVER_HOST_NAME); 
            socket = new Socket(ia, SERVER_HOST_PORT);  
            //socket.connect(new InetSocketAddress(SERVER_HOST_NAME, SERVER_HOST_PORT),10000);
            
            bRet = true;  
        } catch (Exception e)  
        {  
            // TODO: handle exception  
        	Log.i(tags, "socket open error" + e.getMessage());
        }  
              
        return bRet;  
    }  
      
    //   
	public boolean sendMsg(String msg) {
		boolean bRet = false;
		if (socket != null) {
			if (socket.isConnected()) {
				// SOCKET   
				try {
					mPrintWriter = new PrintWriter(socket.getOutputStream(), true);
					mPrintWriter.print(msg);
					mPrintWriter.flush();
					bRet = true;
				} catch (IOException e) {
					// TODO Auto-generated catch block
					Log.i(tags, "write socket error");
					e.printStackTrace();
				}
					
			}
		}
		return bRet;
	}
	public boolean sendMsg2(byte[] buffer, int offset, int count) {
		boolean bRet = false;
		if (socket != null) {
			if (socket.isConnected()) {
				// SOCKET   
				try {
					mOutputStream = socket.getOutputStream();
					mOutputStream.write(buffer, offset, count);
					mOutputStream.flush();
					Log.i("NMCDataUnPack", "socket send success--------");
					bRet = true;
				} catch (IOException e) {
					// TODO Auto-generated catch block
					Log.i(tags, "write socket error");
					e.printStackTrace();
				}
					
			}
		}
		return bRet;
	}
	
    //   
    public String readMsg()  
    {  
        String msgString = "";  
        try  
        {  
        	mInputStream = socket.getInputStream(); 
            byte buffer[] = new byte[1024];  
            int reCount = mInputStream.read(buffer);  
            msgString = EncodingUtils.getString(buffer, /*"GB2312"*/"US-ASCII"); 
        }catch (Exception e)  
        {  
        	Log.i(tags, "read socket error");
        	e.printStackTrace();
        } 
        return msgString;  
    }  
    public String readMsg2()  
    {  
        String msgString = "";  
   
        	try {
        		char[] buffer = new char[1024];  
				Reader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
				reader.read(buffer);
				msgString = buffer.toString(); 
			} catch (IOException e) {
				Log.i(tags, "read socket error");
				e.printStackTrace();
			}
       
        return msgString;  
    }    
      
    public void close()  
    {  
        try  
        {   mInputStream.close();
        	mPrintWriter.close();
            mOutputStream.close();
            socket.close();  
        } catch (Exception e)  
        {  
            // TODO: handle exception  
        	Log.i(tags, "socket close error" + e.getMessage());
        }  
    }  
}

좋은 웹페이지 즐겨찾기