Android客户端通过TCP接收服务器端发送的数据

引言

   因为我确实不懂TCP通信这一块儿,最近项目中要实现客户端接收服务器端发送过来的数据(这个数据是int型的,范围是0~360,而且服务器端用C语言写的,每一秒发送一次,客户端只需要不断接收就好了),很开心的用BufferedReader读取数据,结果发现一直读取不到数据,这下就慌了,搞了整整半天才用DataInputStream通过byte读取到数据。

一、BufferedReader

       BufferedReader可以从字符输入流中读取文本,通过缓存来达到高效的读取字符、数组等数据。

       说白了用它是因为它比较高效,它里边默认缓冲区的大小是8k。说下它的两个主要的函数:

       1.Read()   读取并返回一个单一的字符,做为int类型返回,这个类型的范围是0~65535,因为一个char的范围是-128~128,实际值是-128~127,当读取的值大于等于128时,返回的均是65535,具体代码如下:

public class TcpConnection extends Thread {
    private String ipAddress;
    private int ipPort;
    TcpResult tcpResult;

    public TcpResult getTcpResult() {
        return tcpResult;
    }

    public void setTcpResult(TcpResult tcpResult) {
        this.tcpResult = tcpResult;
    }

    public TcpConnection(String address, int port) {
        this.ipAddress = address;
        this.ipPort = port;
    }

    Socket socket;
    InputStream is;
    BufferedReader br;


    @Override
    public void run() {
        super.run();
        try {
            socket = new Socket(ipAddress, ipPort);
             socket.setSoTimeout(20000);
            if (socket.isConnected() && !socket.isClosed()) {
                is = socket.getInputStream();
                Log.e("test", "connect success");

                br = new BufferedReader(new InputStreamReader((is));
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        int data = 0;
                        try {
                            while ((data=br.read())!=-1) {
 
 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值