Android之socket客户端
接收数据不要用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客户端的更多相关文章
- java版简易socket客户端
android项目需要使用到心跳, 于是编写了一个简易的socket客户端程序 主要功能是给服务端发送心跳包,保持在线状态 没有使用框架,这样避免了需要引入包,直接使用的阻塞Socket通信. 主要逻 ...
- Android 基于Socket的聊天应用(二)
很久没写BLOG了,之前在写Android聊天室的时候答应过要写一个客户(好友)之间的聊天demo,Android 基于Socket的聊天室已经实现了通过Socket广播形式的通信功能. 以下是我写的 ...
- Android 之 Socket 通信
Android 之 Socket 通信 联系一下 Socket 编程,之后需要将一个 JavaEE 项目移植到 Android,暂时现尝试写一个简单的 DEMO,理解一下 Socket Server ...
- 基于android的Socket通信
一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户 ...
- Android中Socket通信之TCP与UDP传输原理
一.Socket通信简介 Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时 ...
- Android 通过Socket 和服务器通讯
Extends:(http://www.cnblogs.com/likwo/p/3641135.html) Android 通过Socket 和服务器通讯,是一种比较常用的通讯方式,时间比较紧,说下大 ...
- Android连接socket服务器上传下载多个文件
android连接socket服务器上传下载多个文件1.socket服务端SocketServer.java public class SocketServer { ;// 端口号,必须与客户端一致 ...
- Android 通过SOCKET下载文件的方法
本文实例讲述了Android通过SOCKET下载文件的方法.分享给大家供大家参考,具体如下: 服务端代码 import java.io.BufferedInputStream; import java ...
- 基于Socket客户端局域网或广域网内共享同一短信猫收发短信的开发解决方案
可使同一网络(局域网或广域网)内众多客户端,共享一个短信猫设备短信服务器进行短信收发,短信服务器具备对客户端的管理功能. 下面是某市建设银行采用本短信二次开发平台时实施的系统方案图: 在该方案中,考虑 ...
随机推荐
- cocos2d-x JS 纯代码实现人物头像裁剪
有时候为了方便会直接用颜色层和过渡层来显示一些信息,但层只有方角没有圆角不太美观,于是我用剪切节点实现了一个圆角层.方便以后使用. 当然,如果使用Cosos Studio 操作会更好一些,省去了坐 ...
- uft调用rfc接口
RFC接口函数调用: 以下代码是封装好的,为了提供给UFT工具调用,使用c#写成dll. 类型项目分成两个: 1.baseConfigModel.cs //sap配置登录信息,属性实体类 using ...
- ssdb使用笔记
ssdb是一款类似于redis的nosql数据库,不过redis是基于内存的,服务器比较昂贵,ssdb则是基于硬盘存储的,很容易扩展,对于一些对速度要求不是太高的应用,还是不错的选择. 先记录一个比较 ...
- VS基本学习之(变量与常量)
一.变量与常量 1) 变量 由(定义+赋值+取值组成) 变量的命名规则: ① 变量名组成:字母 数字 下划线 @ 汉字 ② 首字母只能用:字母 下划线 @ 汉字(不能是数字 ...
- 读写App.config配置文件的方法
我们经常会希望在程序中写入一些配置信息,例如版本号,以及数据库的连接字符串等.你可能知道在WinForm应用程序中可以利用Properties.Settings来进行类似的工作,但这些其实都利用了Ap ...
- python windows环境下安装
下载python安装包,双击安装后, 在cmd中输入python 若无反应, 在cmd设置环境变量 变量 : set PATH=C:\...\...\...[python的编译器的路径]:%PATH% ...
- hdu1757 构造矩阵
Lele now is thinking about a simple function f(x). If x < 10 f(x) = x.If x >= 10 f(x) = a0 * f ...
- 【Linux学习四】正则表达式
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 一.grep:显示匹配行v:反显示e:使用扩展正则表达式E:不使用正则 ...
- STL容器之map
[1]map容器 map 是关联容器.容器中的每一个元素都是由一个键值和一个数据值组成的. set 是一个集合它以其元素作为键值(同一个键值只能出现一次),且默认以升序排列. list 是一个顺序容器 ...
- Git简明使用教程
猴子都能懂的GIT入门 https://backlog.com/git-tutorial/cn/git - 简易指南(这份教程挺好的) http://www.bootcss.com/p/git-gui ...