首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

TCP连接的两种简略的数据传输方式

2013-10-27 
TCP连接的两种简单的数据传输方式TCP适合传输自定义原始的字节流,比如传输一个序列化为字节流后的对象或者

TCP连接的两种简单的数据传输方式

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 blockLog.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 blockLog.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());        }      }  }


热点排行