android tcp通信如何做到心跳管理

我想实现一个TCP通信:点击登陆后将用户名和密码打包(包为bytes)发送给服务器后,服务器发送包给客户端。
登陆成功后还需要做两个动作:1、客户端没隔30S给客户端发送一次bytes ;2、当服务器有数据过来时,客户端自动接收数据。
现在的问题是我是做两个线程还是做一个线程呢。我做了两个线程,一个接一个发,但是我怎么实现第二点呢。哪位大神可以给我点详细的指点么。本人新手,菜鸟一个。跪求大神指点。

获取输入流,用read方法返回值判断是否有数据,并接收。

写一个server,在android中,server是在后台运行的,你不在代码里面关闭server的话,它就一直运行,除非退出或关机,在系统启动的时候,或者登陆成功的时候,就startserver();具体定时器,上网上找