日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

在Android上使用Socket

發(fā)布時間:2025/4/9 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Android上使用Socket 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://www.cnblogs.com/kross/p/3621952.html

?

考慮到以后可能要用到這方面的知識,就來寫個Demo嘗試下,其實以前學過,但不記得了……(用不到的東西各種不記得啊)

直接進入正題吧,在Android上使用Socket實際上跟在Java中使用差不多,只要注意下在Manifest中加網絡權限就好了(我原來經常犯這個錯誤),另外網絡請求不能再主線程里,基本就OK了。

そして,先寫一個服務器的小程序吧。就直接使用Java寫就好了,灰常的簡單,隨便寫寫。

/*** 測試服務器* */ public class TestServer {public static void main(String[] args) throws IOException {ServerSocket ss = new ServerSocket(5417);Socket client = null;while (true) {System.out.println("waiting for...");client = ss.accept();BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream()));System.out.println(br.readLine());}} }

然后我的構想是,手機上有一個輸入框,一個按鈕,用戶可以按按鈕,把輸入框里的內容發(fā)送到服務器上。一開始我寫了一個很混亂的demo,為了更加方便使用,就把Socket的封裝了一下,就叫SocketManager吧,代碼如下:

/*** SocketManager,簡單的封裝了一下* @author Kross(krossford@foxmail.com)* @date 2014-3-24 21:39:48* */ public class SocketManager {private Socket client = null;//服務器的IP地址private String ip = "113.251.172.30";//監(jiān)聽的端口號private int port = 5417;/*** 獲取一個實例* */public static SocketManager newInstance() throws UnknownHostException, IOException {return new SocketManager();}private SocketManager() throws UnknownHostException, IOException {client = new Socket(ip, port);}/*** 發(fā)送一條消息* @param msg 消息內容* */public void sendMessage(String msg) throws IOException {PrintWriter printWriter = new PrintWriter(client.getOutputStream());printWriter.print(msg);printWriter.flush();printWriter.close(); //一定要關閉輸出流,要不然消息無法送達到服務器 } }

幾個要點:

1.IP地址就寫Java程序鎖運行的機器的公網地址,cmd->ipconfig就可以查到。

2.端口號請和服務器那個保持一致,都不在一個管道里怎么通信哇。

3.我使用了靜態(tài)工廠方法,每次都要重新new一個SocketManager,因為我發(fā)現Socket這個類只能用一次,close之后再發(fā)送便沒用了。

4.服務器要收到信息,必須要客戶端的東西close了,輸出流close也好,socket.close也好,總之要close,服務器才能確切的收到。

然后,我寫了一個線程來執(zhí)行這個Socket,因為不能在主線程跑嘛,我想了很久,可不可以讓這個線程一直執(zhí)行著,然后只要調用下這個線程的sendMessage方法,就可以發(fā)送了,這樣就只需要new一個線程就行了,但是我想了好久,都想不通,貌似不能那樣,線程要么沒有,有的話就會一股腦的執(zhí)行它的run()方法,想要長時間持有它?在run里面加個while(true)?那怎么做到調用它的共有方法呢?總之,我沒有想到用只需要new一個線程就可以發(fā)N個請求的辦法,貌似需要使用到Service來實現了。

/*** 發(fā)起請求的線程* @author Kross(krossford@foxmail.com)* @date 2014-3-24 21:40:21* */ public class SocketThread implements Runnable {private String message;public SocketThread(String msg) {message = msg;}@Overridepublic void run() {try {SocketManager.newInstance().sendMessage(message);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} }

這里倒沒什么好說的。接下來我們就直接在MainActivity里面準備好控件,監(jiān)聽器,然后就OK了,大致的看下代碼吧。

public class MainActivity extends Activity {private EditText etInput = null;private Button bSend = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.i("MainActivity", Thread.currentThread().getName());etInput = (EditText)findViewById(R.id.et_input);bSend = (Button)findViewById(R.id.b_send);bSend.setOnClickListener(new SendButtonListener());}class SendButtonListener implements OnClickListener {@Overridepublic void onClick(View v) {String msg = etInput.getEditableText().toString().trim();new Thread(new SocketThread(msg)).start();etInput.setText("");}} }

OK,代碼就是這樣了,來看下最終的運行效果吧。

先啟動Java的服務器程序,啟動后結果是這樣的:

然后我們運行手機上的程序,發(fā)送一條消息:

再來看服務器端的程序:

看上去一切正常,再來一發(fā)!

再看看服務器的程序:

OK,看來是沒有問題了。

?

服務器如何向Socket返回信息暫時還沒有去實驗,留著明天來搞吧……

?

原文地址:http://www.cnblogs.com/kross/p/3621952.html

新浪微博:http://weibo.com/KrossFord

轉載于:https://www.cnblogs.com/kross/p/3621952.html

總結

以上是生活随笔為你收集整理的在Android上使用Socket的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产污视频在线看 | 自拍偷拍导航 | 国产精品30p| 好吊色在线观看 | 国产成人精品视频在线 | 激情婷婷色 | 中文字幕精品在线视频 | 欧美高清videos高潮hd | 中文字幕亚洲欧美日韩 | 亚洲jizzjizz | 久久久免费看 | 亚洲综合五月天 | 九九精品网| av不卡高清| 国产人人射 | 欧美黑人疯狂性受xxxxx喷水 | 精品人妻一区二区三区日产 | 亚洲av毛片一区二二区三三区 | 91桃色网站 | 欧洲视频一区二区 | 天堂av资源在线 | 人人草人人搞 | 久久国产福利 | 欧美精品一区二区在线播放 | 日批黄色| 黄色片女人 | 日韩毛片在线免费观看 | 99热这里只有精品2 91免费版黄 | 日日躁夜夜躁白天躁晚上躁91 | 红杏出墙记 | 无码h黄肉3d动漫在线观看 | 性色av网址 | 日日碰狠狠添天天爽 | 国产第5页| 中文字幕亚洲在线 | 艹男人的日日夜夜 | 台湾a级片 | 黄色777 | 高清国产视频 | 天堂中文视频在线 | 欧美jizzhd精品欧美18 | 久久免费看少妇高潮 | 伊伊总综合网 | 宅男午夜在线 | 99久久婷婷国产综合精品 | 在线免费av网址 | 亚洲成人一区二区 | 亚洲欧洲色 | 天天操天天插天天射 | 午夜电影你懂的 | 久久精品视频91 | 成人黄色小视频在线观看 | 亚洲成人av中文字幕 | 亚洲欧洲日韩国产 | www.久久精品 | 日韩精品在线观看免费 | 国产精品视频网址 | 活大器粗np高h一女多夫 | 亚洲午夜精品在线观看 | 久草手机在线 | 另类视频在线观看+1080p | 国产视频在线观看一区 | 精品在线视频观看 | 怡红院一区 | 日本一区二区三区精品视频 | 日韩综合区 | xxxx 国产 | 亚洲香蕉视频 | 久草热播 | 最新色视频 | 3级黄色片| 日本熟女毛茸茸 | jjzz日本女人 | 快色视频在线观看 | 成人在线小视频 | 日韩在线播放中文字幕 | 青草青草久热 | 韩日免费av | av在线播放一区二区三区 | 欧美久久天堂 | 天堂av电影在线观看 | 天堂精品 | 日本中文在线 | 国产精品美女一区二区 | 制服av在线 | 大黑人交交护士xxxxhd | 国产破处av | 欧美精品福利视频 | 久久久久逼 | 高清av在线| 久久密av | 欧美成欧美va | 色窝窝无码一区二区三区成人网站 | 国产福利观看 | 自拍偷拍欧美亚洲 | www.色图| 好吊日精品视频 | www黄色| 幸福宝在线观看 |