接收数据不要用readline(),用read()

Socket mSocket = new Socket("192.168.1.100", 8888);

DataInputStream dinput = new DataInputStream(mSocket.getInputStream())

读取服务端发过来的数据:

int length = dinput.read(bbuf);
String mStrMSG = new String(bbuf, 0, length, "gb2312");

package com.example.tcp_client;
import java.io.DataInputStream;
import java.io.PrintWriter;
import java.net.Socket; import android.annotation.SuppressLint;
import android.os.Handler;
import android.os.Message;
import android.os.StrictMode;
import android.util.Log; @SuppressLint("NewApi") public class TCPClient implements Runnable{
private static final String SERVERIP = "192.168.1.100";
private static final int SERVERPORT = ;
private Thread mThread = null;
private static Socket mSocket = null;
private DataInputStream dinput;
private static PrintWriter mPrintWriter = null;
private static String mStrMSG = "";
private static String TAG = "TCPClient";
//接收线程发送过来信息,并用TextView显示
public Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.e("服务器说:", mStrMSG);
MainActivity.AppendText("服务器说:"+mStrMSG);
}
};
public void StartTCPClient(){
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
try
{
// ①Socket实例化,连接服务器
mSocket = new Socket(SERVERIP, SERVERPORT);
// ②获取Socket输入输出流进行读写操作
dinput=new DataInputStream(mSocket.getInputStream());
mPrintWriter = new PrintWriter(mSocket.getOutputStream(), true);
new Thread(TCPClient.this).start();
} catch (Exception e)
{
Log.e(TAG, e.toString());
}
} public static void SendToServer(String sendmsg){
mPrintWriter.print(sendmsg);
mPrintWriter.flush();
} /**
* 读取服务器发来的信息,并通过Handler发给UI线程
*/
public void run() {
try {
byte[] bbuf = new byte[];
while (true) { if (!mSocket.isClosed()) {
if (mSocket.isConnected()) {
if (!mSocket.isInputShutdown()) {
int length = dinput.read(bbuf);
mStrMSG = new String(bbuf, , length, "gb2312");
mStrMSG += "\n";
mHandler.sendMessage(mHandler.obtainMessage());
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

TCP服务端

使用实例化即可

try
{
tcpclient =new TCPClient();
tcpclient.StartTCPClient();
} catch (Exception e)
{
// TODO: handle exception
Log.e("MainActivity", e.toString());
}

Android之socket客户端的更多相关文章

  1. java版简易socket客户端

    android项目需要使用到心跳, 于是编写了一个简易的socket客户端程序 主要功能是给服务端发送心跳包,保持在线状态 没有使用框架,这样避免了需要引入包,直接使用的阻塞Socket通信. 主要逻 ...

  2. Android 基于Socket的聊天应用(二)

    很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...

  3. Android 之 Socket 通信

    Android 之 Socket 通信 联系一下 Socket 编程,之后需要将一个 JavaEE 项目移植到 Android,暂时现尝试写一个简单的 DEMO,理解一下 Socket Server ...

  4. 基于android的Socket通信

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户 ...

  5. Android中Socket通信之TCP与UDP传输原理

    一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...

  6. Android 通过Socket 和服务器通讯

    Extends:(http://www.cnblogs.com/likwo/p/3641135.html) Android 通过Socket 和服务器通讯,是一种比较常用的通讯方式,时间比较紧,说下大 ...

  7. Android连接socket服务器上传下载多个文件

    android连接socket服务器上传下载多个文件1.socket服务端SocketServer.java public class SocketServer { ;// 端口号,必须与客户端一致 ...

  8. Android 通过SOCKET下载文件的方法

    本文实例讲述了Android通过SOCKET下载文件的方法.分享给大家供大家参考,具体如下: 服务端代码 import java.io.BufferedInputStream; import java ...

  9. 基于Socket客户端局域网或广域网内共享同一短信猫收发短信的开发解决方案

    可使同一网络(局域网或广域网)内众多客户端,共享一个短信猫设备短信服务器进行短信收发,短信服务器具备对客户端的管理功能. 下面是某市建设银行采用本短信二次开发平台时实施的系统方案图: 在该方案中,考虑 ...

随机推荐

  1. OpenResty编译安装

    从下载页 Download下载最新的 OpenResty® 源码包,并且像下面的示例一样将其解压: tar -xzvf openresty-VERSION.tar.gz VERSION 的地方替换成您 ...

  2. linux df查看硬盘使用量 du查看文件所占大小

    df 常用来查看磁盘的占用情况. du 常用来查看文件夹的大小等. Linux命令: df  [-ahikHTm]  [目录或者文件夹] 参数: -h : 以交较易识别的方式展示使用量  111100 ...

  3. python爬虫-基础入门-爬取整个网站《1》

    python爬虫-基础入门-爬取整个网站<1> 描述: 使用环境:python2.7.15 ,开发工具:pycharm,现爬取一个网站页面(http://www.baidu.com)所有数 ...

  4. winform下picturebox控件显示图片问题

    viewData_pictureBox.SizeMode=PictureBoxSizeMode.StretchImage;图片会自动按照比例缩放来完全显示在你的PictureBox中.

  5. Javascript-全局函数和局部函数作用域的理解

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. php 门面模式

    1.门面模式为外部提供一个统一的接口,外部调用者不用知道内部的具体复杂业务. 2.如果不使用门面模式,直接访问内部系统,会造成相互直接的耦合关系, 3.想让你的子系统开通哪些,就开通哪些,在门面上开通 ...

  7. 将Web项目War包部署到Tomcat服务器基本步骤

    参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1. 常识:   1.1 War包 War包一般是在进行Web ...

  8. html5-section元素

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. 读取文件任意位置的内容——RandomAccessFile

    http://www.cnblogs.com/Sunw/p/3801145.html http://www.cnblogs.com/dukc/p/4776868.html http://www.cnb ...

  10. linux 远程执行命令

    命令: ssh 命令参数: -l 指定登入用户 -p 设置端口号 -f 后台运行,并推荐加上 -n 参数 -n 将标准输入重定向到 /dev/null,防止读取标准输入 -N 不执行远程命令,只做端口 ...