• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Socket for android 简单实例,socketandroid

Socket for android 简单实例,socketandroid

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了socket.io for unity,android socket实例,android socket通信,android socket,android socket编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Socket for android 简单实例,socketandroid


最近在实现socket通信,所以写个demo来简单实现下。我用了一种是原始的socket实现,另一种是MINA框架来实现的。

下载demo:http://download.csdn.net/detail/qq_29774291/9826648

一.先看第一种方法

a)、创建Socket对象,指明需要连接的服务器的地址和端口。

b)、建立连接后,通过输出流向服务器发送请求信息。

c)、通过输入流获取服务器的响应信息。

d)、关闭响应资源

如下是主要代码

package com.item.item.sock.socket;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;

/**
 * Socket 通信
 */
public class MyServiceOne extends Service {
    private Socket socket;
    private BufferedReader in = null;
    private BufferedWriter out = null;
    private boolean close = true;
    private Thread readThread;

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onCreate() {
        super.onCreate();
        close = true;
        new Thread(new Runnable() {
            @Override
            public void run() {
                int count = 0;
                for(;;){
                    try {
                        count++;
                        SocketAddress socketAddress = new InetSocketAddress(ConnectUtils.HOST,ConnectUtils.POST);
                        socket = new Socket();
                        socket.connect(socketAddress,10000);
                        if(socket.isConnected()){
                            System.out.println("socket 连接成功");
                            in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
                            out =new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8"));
                            //发送一个消息
                            out.write("start");
                            out.flush();
                            //开启一个线程来读取服务器发来的消息
                            readThread.start();
                            break;
                        }
                    }catch (Exception e){
                        if(count > ConnectUtils.IDLE_TIME){
                            break;
                        }else {
                            SystemClock.sleep(5000);
                        }
                    }
                }
            }
        }).start();
        readThread = new Thread(new Runnable() {
            @Override
            public void run() {
                while (close){
                    String readtext = readText(socket);
                    if(readtext !=null){
                        System.out.println("服务器发来的消息:" + readtext);
                    }
                }
            }
        });
    }

    private String readText(Socket socket) {
        String string = null;
        if(socket.isConnected()){
            try {
                char[] buffer = new char[8000];
                int count = 0;
                if((count = in.read(buffer)) > 0){
                    char[] temp = new char[count];
                    for(int i=0;i<count;i++){
                        temp[i] = buffer[i];
                    }
                    string = new String(temp);
                }
            }catch (Exception e){
                string = null;
            }
        }
        return  string;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        close = false;
        if(socket != null){
            try {
                socket.close();
                socket = null;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

二.第二种方法是用MINA框架实现的

package com.item.item.sock.socket;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.os.SystemClock;
import android.util.Log;

import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.service.IoService;
import org.apache.mina.core.service.IoServiceListener;
import org.apache.mina.core.session.IdleStatus;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.NioSocketConnector;

import java.net.InetSocketAddress;
import java.nio.charset.Charset;

/**
 * 使用MINA框架实现socket通信
 * 由于接受消息会阻塞Android线程,所以开在子线程中(同时将其放在Service中,让其在后台运行)
 */
public class MyServiceTwo extends Service {
    private String TAG = "jiejie";
    private IoSession session = null;
    private MinaClientHandler minaClientHandler;
 



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Socket for android 简单实例,socketandroid

相关文章

  • 2017-05-26zabbix 应用系列之nginx tcp stream监控
  • 2017-05-26MultiTouch————多点触控,伸缩图片,变换图片位置,
  • 2017-05-26连点处理,禁止按钮在短时间内被多次点击,按钮短时间内
  • 2017-05-222.4.7ListView的焦点问题
  • 2017-05-26Android-BroadcastReceiver详解
  • 2017-05-26Android自动化构建之Ant多渠道打包实践分析(下)
  • 2017-05-26自定义Dialog,android自定义dialog
  • 2017-05-26不带数据和返回的Activity跳转,返回activity跳转
  • 2017-05-26【方法总结】创建、读取、删除文件相关操作,读取删除文件
  • 2017-05-227.5.1 WebView(网页视图)基本用法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 在Android studio中进行单元测试和ui测试的分析
    • 4.1.1 Activity初学乍练
    • Android--Activity四种启动模式
    • Kotlin的扩展函数:扩展Android框架(KAD 08),kotlinandroid
    • Git版本控制工具(一)----git的安装及创建版本库,git----git
    • android adb pull push,androidadb
    • Android中ListView实现图文并列并且自定义分割线(完善仿微信APP),androidlistview
    • Linux动态链接库加载失败一例
    • 手把手教你打造一个心电图效果View Android自定义View
    • BadgeView使用,jsbadgeview使用方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有