一直都好使啊。。好使 好使

MainActivity://overover

package com.example.sockettest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketTimeoutException;

import com.example.sockettest.DataService.CarRecordBinder;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {

Socket socket = null;
    String buffer = "";
    public String line ;
    TextView txt1;
    Button btn1;
    Button btn2;
    Button btn3;
    Button btn4;
    public static DataService mService;
    private String TAG = "";

TextView textview;
    String geted1;
    BroadcastReceiver receiver = new BroadcastReceiver() {

@Override
        public void onReceive(Context context, Intent intent) {
            line = mService.getLine();
            textview.setText(line) ;
        }
    };

public Handler myHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0x11) {

// txt1.append("server:"+bundle.getString("msg")+"\n");

Toast.makeText(MainActivity.this, "发送成功! ", Toast.LENGTH_LONG)
                        .show();
            }
        }

};

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn1 = (Button) findViewById(R.id.app1);
        btn1.setOnClickListener(this);
        btn2 = (Button) findViewById(R.id.app2);
        btn2.setOnClickListener(this);
        btn3 = (Button) findViewById(R.id.app3);
        btn3.setOnClickListener(this);
        btn4 = (Button) findViewById(R.id.app4);
        btn4.setOnClickListener(this);

textview = (TextView) findViewById(R.id.textview);

Intent i = new Intent("com.neusoft.radioserver.RadioGpsService");
        bindService(i, mConnection, Context.BIND_AUTO_CREATE);

IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction("com.dede.dede");
        registerReceiver(receiver, intentFilter);

}

class MyThread extends Thread {

public String txt1;

public MyThread(String str) {
            txt1 = str;
        }

@Override
        public void run() {
            // 定义消息
            Message msg = new Message();
            msg.what = 0x11;
            Bundle bundle = new Bundle();
            bundle.clear();
            try {
                // 连接服务器 并设置连接超时为5秒
                socket = new Socket();
                socket.connect(new InetSocketAddress("1.1.9.30", 30000), 5000);
                // 获取输入输出流
                OutputStream ou = socket.getOutputStream();
                BufferedReader bff = new BufferedReader(new InputStreamReader(
                        socket.getInputStream()));
                // 读取发来服务器信息
                // String line = null;
                // buffer="";
                // while ((line = bff.readLine()) != null) {
                // buffer = line + buffer;
                // }

// 向服务器发送信息
                ou.write(txt1.getBytes());
                ou.flush();
                // 发送消息 修改UI线程中的组件
                myHandler.sendMessage(msg);
                // 关闭各种输入输出流
                bff.close();
                ou.close();
                socket.close();
            } catch (SocketTimeoutException aa) {
                // 连接超时 在UI界面显示消息
                bundle.putString("msg", "服务器连接失败!请检查网络是否打开");
                msg.setData(bundle);
                // 发送消息 修改UI线程中的组件
                myHandler.sendMessage(msg);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

@Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.app1:
            // 启动线程 向服务器发送和接收信息
            new MyThread("APP1").start();
        case R.id.app2:
            // 启动线程 向服务器发送和接收信息
            new MyThread("APP2").start();
        case R.id.app3:
            // 启动线程 向服务器发送和接收信息
            new MyThread("APP3").start();
        case R.id.app4:
            // 启动线程 向服务器发送和接收信息
            new MyThread("APP4").start();
        }

}

private ServiceConnection mConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className, IBinder service) {
            mService = ((CarRecordBinder) service).getService();
 
        }

public void onServiceDisconnected(ComponentName className) {
            Log.d(TAG, "disconnect service");
            mService = null;
        }
    };

}

dssfsfsfs的更多相关文章

随机推荐

  1. 从jvm角度来解析java语法糖

    java有很多语法糖,比如自动拆箱,自动装箱,foreach等等,这些原理相信每一个入门教程里都有讲,但是我相信不是每一个人 都通过查看这些语法糖的字节码来确认这些原理,因为我也是现在才想看一下. 1 ...

  2. 容器中跨主机的网络方案-Calico

    容器中的网络是建立docker集群的重要内容. 本文将介绍如何用Calico实现容器的多节点互通. Calico的组件结构如下: Calico通过etcd同步Bridge的信息,各个Docker no ...

  3. iPhone之IOS5内存管理(ARC技术概述)

    ARC(Automatic Reference Counting )技术概述 此文章由Tom翻译,首发于csdn的blog,任何人都可以转发,但是请保留原始链接和翻译者得名字.多谢! Automati ...

  4. java图形用户界面练习。j2se

    总结:主要是如何布局.还是存在很大问题 package clientFrame; import java.awt.FlowLayout; import javax.swing.JButton; imp ...

  5. js前端处理datetime时间类型

    MySql数据库日期字段定义的是datetime类型,(顺带插入MySql数据库datetime类型可以用这个: str_to_date('2008-4-2 15:23:28','%Y-%m-%d % ...

  6. 微信小程序之工具js封装与使用

    工具库的创建与使用 创建一个common文件夹 在common文件夹中创建一个utils文件夹 在utils文件夹中创建util.js // 工具 function tool() { console. ...

  7. Linux内核中常见内存分配函数

    1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...

  8. oracle显示数据库名和表名

    oracle查看表名 select table_name from user_tables; select table_name from dba_tables; select * from all_ ...

  9. 关于性能测试中LR的pacing time设置的相关实验

    最近项目中遇到相关性能测试不同方法产生的争议,我这就这个问题在测试环境做了个实验,得出一些指标数据间的有趣关系,供大家讨论学习: 预备知识点: 业界有个TPS ,ART和实际并发量三者间的模拟换算公式 ...

  10. Java微信公众平台开发(一)--接入微信公众平台

    转自:http://www.cuiyongzhi.com/post/38.html (一)接入流程解析 在我们的开发过程中无论如何最好的参考工具当然是我们的官方文档了:http://mp.weixin ...