使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)

时间:2024-03-19 18:04:47

欢迎转载,请注明转载自微信订阅号(安卓编程入门进阶)。

百度云原清晰度地址:http://pan.baidu.com/s/1mhS0H8O

在socket连接状态下实现客户端发送数据到服务器端的功能,需要在客户端编写字符串输出代码,在服务器端编写数据接收代码。每次有输出时启动一次输出线程来完成,数据输出之后线程结束。在服务器端启动一个子线程用于接收数据,线程处于接收数据的阻塞状态,当有数据传入的时候在控制台打印传入的数据,并循环进入下一次阻塞状态监听传进的数据。本次课程在socket连接建立完成的基础之上实现,socket连接建立方法请参阅上一节课程。

1、  在客户端界面有三个控件,原有按钮为启动连接服务器。增加一个输入框用于用户手动输入需要传输的数据,在增加一个按钮用于在用户输入数据完成之后发送数据至服务器。

使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)

2、  在客户端MainActivity.java中添加控件的定义初始化,并为发送按钮添加事件监听。发送数据需要新创建一个SendData子线程,创建子线程之后,线程的实例对象在MainActivity.java中初始化并定义,由于数据发送子线程需要socket连接实例,所以需要从MainActivity中将sendData的实例先发送至连接子线程,一旦连接成功之后调用sendData类中的setSocket方法传入socket连接实例。如果需要发送数据到服务器,则在MainActivity.java中调用一次SendData的线程即可。

使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)

使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)

使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)

3、本次课程的服务器端接收到数据之后直接打印到控制台,下次课程讲述将接收信息打印到安卓界面。当服务器接受了socket连接请求之后,使用这个socket连接启动一个新的子线程。子线程中使用bufferedReader来阻塞子线程监听数据的接收过程。如果接收到的数据非空则将数据打印到控制台。

使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)

使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)

特别注意:在从客户端发送数据的时候必须在每次的数据发送后面添加“\n”换行符,否则数据不会发送出去。

使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)


                                                   更多最新安卓编程资料请关注微信公众号:安卓编程入门进阶                                           

                                                   使用socket连接实现客户端向服务器端的单向通信(socket通信第二弹)