基于TCP协议的socket通讯实现收发消息

作为一个刚接触android开发的新手,再加上自己之前对java以及c++等编程语言了解甚少,学习起来真是很吃力。尤其不知道该按照什么样的路线来学习让我十分苦恼。于是,看了一些教程、视频之后,了解了些最基本的知识,就开始读一些简单的源码。但感觉学习效果并不好。有些知识总是在遗忘与记忆中反复进行。为此,谨以此系列博客记录自己学习过程中遇到的问题,以便日后回顾,来防止自己好不容易看懂的一些知识慢慢忘掉。

本文所写的socket通讯实例要实现的基本功能就是:使得连在同一路由器上的的两个手机设备A和B可以通过socket通讯互相收发短信。最终要实现的效果如下图所示:


通过在网上查找资料,实现这一功能大致有两种思路:

        一:每一个手机既做客户端又做服务端。

        二:两个手机都连到同一个服务器上,利用服务器转发消息,间接实现A和B的通讯

经过尝试以及参考一些源码,第一种思路很快实现了,但是第二种方法还没能实现,接收转发的消息总显示为null。

个人感觉实现socket编程的核心就是要建立服务端和客户端的连接,

服务端使用serverSocket= new ServerSocket(6346);建立一个监听接口,并通过

Socket socket = serverSocket.accept();//处于阻塞状态,直到接收到请求返回socket对象。
来接收客户端发来的连接请求。客户端通过Socket socket=new Socket(服务端ip,6346);//发送一个连接请求

 
 当建立后就获取一个Socket对象,通过使用输入输出流进行写入和读取就可以实现数据的接受与发送。 

在程序实现的过程中,为了把接收到数据显示出来,由于接受数据部分位于一个子线程中,而子线程不能直接更新UI线程里控件的内容。所以使用了Handler类,来实现把子线程的数据发到主线程来更新UI中的控件。擦,貌似是这样,我也说不清了。果然还是想起来容易,做起来难啊!看来还是理解不够。就先写这些吧。

具体源码如下:

package test.socket;
import java.io.BufferedReader;
import java.io.IOE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值