android TCP/IP传输(客户端)

帮朋友推荐,赢众投理财,CEO是我朋友,全是真实可靠的农业项目,投资收益可达年化9.8%,且有多重安全保障!

点击打开链接




整了好久,查了好多文件才整的有点明白

http://download.csdn.net/detail/small5e4444/4412532


package com.bn.tcp;



import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Arrays;


import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


public class SocketClientActivity extends Activity {

// 设置服务器IP和端口
private static final String SERVERIP        ="192.168.5.178";//服务器端IP
private static final int    SERVERPORT      = 4001;//端口号
private Socket    _socket      = null;
//private BufferedReader  _bufferedReader = null;
private static PrintWriter  _printWriter    = null;
private static EditText _editText02 = null;
private static EditText _editText01 = null;
 
private static Button _connectBtn = null;
private static Button _sumbitBtn = null;

    /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) 
   {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       
       // 初始化文本框
       _editText01 = (EditText)findViewById(R.id.EditText01);
       _editText02 = (EditText)findViewById(R.id.EditText02);
       
       // 接收消息不可编辑
       _editText02.setEnabled(false);
       
       _connectBtn = (Button)findViewById(R.id.connectBtn);
       _sumbitBtn  = (Button)findViewById(R.id.sumbitBtn);
       
       // 连接服务器
       _connectBtn.setOnClickListener(new OnClickListener(){
 
        @Override
        public void onClick(View v){
        // 连接按钮不可用
        _connectBtn.setEnabled(false);
        try {   
        // 连接服务器
        _socket = new Socket(SERVERIP, SERVERPORT); 
        // 取得输入/输出流
        //_bufferedReader = new BufferedReader(new InputStreamReader(_socket.getInputStream(), "GB2312"));
        _printWriter    = new PrintWriter(_socket.getOutputStream(), true); 
        // 开启监听线程
        _thread.start();
        }
        catch (Exception e) {
        System.out.println("Connect is failed!");
        }
        }
       }
       );
       // 发送信息
       _sumbitBtn.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
        String msg = _editText01.getText().toString();
        sendMessage(msg);
        }
       }
       );
   }
   
   // 发送信息到服务器
   public void sendMessage(String message){
    try {
    //String s4="05 00 00 00 23 00 01 02 03 04";
    char charArray[]=new char[13];//16进制发送
    charArray[0]=0x08;
    charArray[1]=0x00;
    charArray[2]=0x00;
    charArray[3]=0x00;
    charArray[4]=0x23;
    charArray[5]=0x00;
    charArray[6]=0x01;
    charArray[7]=0x02;
    charArray[8]=0x03;
    charArray[9]=0x04;
    charArray[10]=0x05;
    charArray[11]=0x06;
    charArray[12]=0x07;
    _printWriter.print(charArray);
    _printWriter.flush();
    }
    catch (Exception e) {
 
    }
   }
   
   private Thread _thread = new Thread(){
    public void run(){ 
    while(true){
    try{ 
    InputStream in = _socket.getInputStream();
    byte[] buffer = new byte[in.available()];
    in.read(buffer);

    String mm="";

                                        //接收到的数据转成16进制

    for (int i = 0; i < buffer.length; i++) { 
    String hex = Integer.toHexString(buffer[i] & 0xFF);  
    if (hex.length() == 1) {   
    mm += '0' + hex+" "; 
    }else{
    mm+=hex+" ";
    }
    }
    String msg=mm;//转成16进制
    if(msg.length() != 0){
    // 在控制台中输出接收到的信息
    System.out.println("in: " + msg);
    // 该部分是传参并更新控件  
    Message message = new Message(); 
    Bundle bundle = new Bundle(); 
    bundle.putString("msg", msg); 
    message.setData(bundle);
    // 发送消息到handler
    _handler.sendMessage(message); 
    }
    }
    catch (Exception e){
    }
    }
    }
   };
   
   Handler _handler = new Handler(){  
    public void handleMessage(Message msg){  
    super.handleMessage(msg); 
    // 刷新信息   
    try{ 
    // 输出接受到的数据(更新控件)
    SocketClientActivity._editText02.setText(msg.getData().getString("msg"));
    }  
    catch (Exception e){ 
    }  
    }
   };

}



//-----------------------------------------------------------------------------------------------------------------------布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<Button 
android:text="连接到服务器" 
android:id="@+id/connectBtn" 
android:layout_width="300dip"
android:layout_height="60dip"></Button>
<EditText android:text="@+id/EditText01" 
android:id="@+id/EditText01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</EditText>
<Button android:text="send" 
android:id="@+id/sumbitBtn" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</Button>
<EditText android:text="@+id/EditText02"
android:id="@+id/EditText02" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
</EditText>
</LinearLayout>


//---------------------------------------------------------------------------------------------------------------------AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.bn.tcp"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".SocketClientActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


    </application>


<uses-permission android:name="android.permission.INTERNET"/>//通信要加上这句话!
</manifest> 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值