Android連接服務(wù)器端的Socket的實(shí)例代碼
廢話不多說(shuō)了,直接給大家貼代碼了,具體代碼如下所述:
package com.exa
mple.esp8266; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintStream; import java.net.Socket; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private EditText edSend, edReceive; private Button btnConnect, btnSend; private Handler myHandler; private SendThread SendThread; private boolean isReceive = false; private boolean isConnect = false; private static final String HOST = "192.168.4.1"; private static final int PORT = 333; String strMessage; Socket socket = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edSend = (EditText) findViewById(R.id.edSend); edReceive = (EditText) findViewById(R.id.edReceive); btnConnect = (Button) findViewById(R.id.btConnect); btnSend = (Button) findViewById(R.id.btSend); // 連接 btnConnect.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if (!isConnect) { new Thread(connectThread).start(); isConnect = true; } } }); // 發(fā)送 btnSend.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // 啟動(dòng)發(fā)送線程 new Thread(SendThread).start(); } }); myHandler = new Handler() {// UI主線程消息處理函數(shù) public void handleMessage(Message msg) { Bundle bundle = msg.getData(); String string = bundle.toString(); edReceive.setText(string); } }; } // 連接到服務(wù)器的接口 Runnable connectThread = new Runnable() { public void run() { // TODO Auto-generated method stub try { socket = new Socket(HOST, PORT); if (socket != null) Toast.makeText(getApplicationContext(), "連接成功", Toast.LENGTH_LONG).show(); else Toast.makeText(getApplicationContext(), "連接失敗", Toast.LENGTH_LONG).show(); // 初始化發(fā)送線程 SendThread = new SendThread(socket); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; // 接收消息的接口 Runnable Receive = new Runnable() { InputStream inStream; private byte[] buffer; private String str = null; public void run() { // TODO Auto-generated method stub while (!isReceive) { buffer = new byte[512]; try { inStream = socket.getInputStream(); inStream.read(buffer); } catch (IOException e) { e.printStackTrace(); } str = new String(buffer); Bundle bundle = new Bundle(); bundle.get(str); Message message = new Message(); message.setData(bundle); myHandler.sendMessage(message); } } }; // 發(fā)送線程 private class SendThread extends Thread { private OutputStream outStream = null; private String str = null; SendThread(Socket socket) { try { outStream = socket.getOutputStream(); } catch (IOException e) { e.printStackTrace(); } } public void run() { // while(true){ str = edSend.getText().toString().trim(); PrintStream pt = new PrintStream(outStream); pt.print(str); new Thread(Receive).start(); // } } } protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (Receive != null) { isReceive = false; ((Thread) Receive).interrupt(); } } }
以上所述是小編給大家介紹的Android連接服務(wù)器端的Socket的實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
kotlin anko頁(yè)面跳轉(zhuǎn)實(shí)現(xiàn)方式,攜帶參數(shù)或flag
這篇文章主要介紹了kotlin anko頁(yè)面跳轉(zhuǎn)實(shí)現(xiàn)方式,攜帶參數(shù)或flag,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android編程實(shí)現(xiàn)TextView部分顏色變動(dòng)的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)TextView部分顏色變動(dòng)的方法,實(shí)例分析了TextView設(shè)置指定位置的背景色與字體顏色的相關(guān)技巧,需要的朋友可以參考下2015-12-12Android開(kāi)發(fā)中Flutter組件實(shí)用技巧
這篇文章主要為大家介紹了Android開(kāi)發(fā)中Flutter組件實(shí)用技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Android開(kāi)發(fā)筆記之圖片緩存、手勢(shì)及OOM分析
這篇文章主要介紹了Android開(kāi)發(fā)筆記之圖片緩存、手勢(shì)及OOM分析 的相關(guān)資料,需要的朋友可以參考下2016-01-01點(diǎn)擊微信內(nèi)網(wǎng)頁(yè)a標(biāo)簽直接跳轉(zhuǎn)打開(kāi)淘寶APP的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于如何實(shí)現(xiàn)點(diǎn)擊微信內(nèi)網(wǎng)頁(yè)a標(biāo)簽直接跳轉(zhuǎn)打開(kāi)淘寶APP的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-11-11Android中關(guān)于屏幕的三個(gè)小眾知識(shí)(寬屏適配、禁止截屏和保持屏幕常亮)
這篇文章主要給大家介紹了Android中關(guān)于屏幕的三個(gè)小眾知識(shí),分別是寬屏適配、禁止截屏和保持屏幕常亮的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們可以參考學(xué)習(xí),下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Android將圖片上傳到php服務(wù)器的實(shí)例代碼
這篇文章主要介紹了Android將圖片上傳到php服務(wù)器的實(shí)例代碼,需要的朋友可以參考下2017-07-07Android仿360懸浮小球自定義view實(shí)現(xiàn)示例
本篇文章主要介紹了Android仿360懸浮小球自定義view實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03Android編程之TabWidget選項(xiàng)卡用法實(shí)例分析
這篇文章主要介紹了Android編程之TabWidget選項(xiàng)卡用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了TabWidget選項(xiàng)卡的具體實(shí)現(xiàn)技巧與使用注意事項(xiàng),需要的朋友可以參考下2015-12-12