Android 浅谈同一局域网下使用WiFi连接打印机

最近的工作还真是忙,所谓是忙里偷闲,为了给大家分享一下如何在同一局域网下,使用WiFi去连接打印机,

刚接到这样的任务时,脑子并没有那么乱,自己的思路还是很清晰的,也许是因为之前做过WiFi的原因吧,然后

就拿着打印机布置好一些相关信息,跟着就各种代码实现,把WiFi的关闭,开关,获取到的列表等等一系列功能

实现了一遍,但是吐血的事情就发生了,原来产品需求并没有要求那么复杂,只是很简单的一个要求,直接输入

ip地址和端口号,然后可以连接成功就完事了。这里告诫我们,在开发的时候,最好就先了解清楚产品需求,

以免做无用功,接下来就进入到代码实现环节啦。

1. 同一局域网下使用WiFi连接打印机,可以实现打印出文本,可以想一下,用什么方法去实现呢?

socket通信,没错,相信这个是最好的通信工具了,那什么是socket呢,它的好处有哪些,这里就简单和大家分享一下socket的通信机制原理,所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。

下面是一个很简单的服务端与前端的通信demo

//这个是服务端的代码

//这个是客户端的代码实现

好了,以上就是一个简单的服务端与客户端交互的demo,足够细心的童鞋会发现,我在客户端的代码里面有简单说过打印操作的东西,

其实和打印机交互是个很简单的东西,不需要去想的那么复杂,只需要把打印机当作是服务端,APP作为客户端,那么我们实现与打印机交互的原理也就实现了,

1.首先创建一个Socket

Socket socket =new Socket("127.0.0.1",9999);,只需要实现这行代码就好了,因为会自动帮你做连接动作,

2. 然后判断是否建立通信了

if(socket.isConnected() && socket.getKeepAlive()){       }

3. 连接成功后,就需要获取到输出流 OutputStream outputStream = socket.getOutputStream();

4.直接使用输出流将你想要打印的文本打印出来就可以了

```

 try{

    byte[] data = text.getBytes("GB2312");

    outputStream.write(data,0, data.length);

    outputStream.flush();

}catch(IOException e) {

 Log.e("printText "+ e);

}

```

对了,在操作打印机之前还需要执行这么一行代码,那就是复位打印机

private static final byte[] RESET= {0x1b,0x40};

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容