Posts tagged: java

CocoaAsyncSocket学习

以下内容翻译自: http://code.google.com/p/cocoaasyncsocket/ CocoaAsyncSocket支持tcp和udp。其中: AsyncSocket类是支持TCP的 AsyncUdpSocket是支持UDP的 AsyncSocket是封装了CFSocket和CFSteam的TCP/IP socket网络库。它提供了异步操作,本地cocoa类的基于delegate的完整支持。主要有以下特性: 队列的非阻塞的读和写,而且可选超时。你可以调用它读取和写入,它会当完成后告知你 自动的socket接收。如果你调用它接收连接,它将为每个连接启动新的实例,当然,也可以立即关闭这些连接 委托(delegate)支持。错误、连接、接收、完整的读取、完整的写入、进度以及断开连接,都可以通过委托模式调用 基于run loop的,而不是线程的。虽然可以在主线程或者工作线程中使用它,但你不需要这样做。它异步的调用委托方法,使用NSRunLoop。委托方法包括socket的参数,可让你在多个实例中区分 自包含在一个类中。你无需操作流或者socket,这个类帮你做了全部 支持基于IPV4和IPV6的TCP流 AsyncUdpSocket是UDP/IP socket网络库,包装自CFSocket。它的工作很像TCP版本,只不过是用于处理UDP的。它包括基于非阻塞队列的发送接收操作,完整的委托支持,基于runloop,自包含的类,以及支持IPV4和IPV6。    发送文章为PDF   

Grails实现zip文件上传及加入文件方案

使用Grails和Groovy,实现了这样的需求: zip文件上传 zip文件上传后,在zip文件中加入自定义文本文件 在Grails实现复杂的数据录入上实现的本示例。示例如图:   准备工作:文件上传 首先说一下文件上传,在Grails中,借助Spring MVC的底层支持,实现还是很容易的。 视图: <body> <div style="margin-left: 15px;"> <g:message code="${flash.message}" /> <g:form action="uploadFile" method="post" enctype="multipart/form-data"> <input type="file" name="myFile" /> <input type="submit" value="上传" /> <input type="hidden" name="id" value="1"/> </g:form> </div> </body>   在这里hidden了一个参数,是用于服务器端使用的。    发送文章为PDF   

测试Tomcat对断点续传的支持

虽然看Tomcat api中提供了对断点续传的支持。但是要确定下来就需要做实验。 还是借助编写断点续传客户端代码中的示例。另外,启动Grails项目(Grails实现复杂的数据录入),先测试一下静态资源文件: 链接是: http://localhost:8080/BookProto/images/grails_logo.png Grails降级后(Grails从1.4m1版本回退到1.3.7)后会不会使用的是jetty啊,测试一下: 日志引用Grails编写断点续传服务器端    发送文章为PDF   

星期一 七月 11th, 2011 in , , , , , | No Comments »

编写断点续传客户端代码

在HttpClient下载二进制文件的基础是编写断点续传代码。 断点续传的基本原理是,客户端在发送请求中可加入比如这样的请求头: Range: bytes=3- 表示,要服务器发送从第四个字节开始的内容。如果服务器端支持断点续传,则返回响应的码不再是200,而是206。并且发送的内容是从第四个字节开始。 下面编写了两段代码,其中第一段,模拟正常请求,但是在读取到11个字节时停止。 日志引用测试Tomcat对断点续传的支持    发送文章为PDF   

星期一 七月 11th, 2011 in , , , | No Comments »

HttpClient下载二进制文件

在最简单的HttpClient应用基础上,编写了从服务器下载二进制文件的示例。示例链接为: http://labs.renren.com/apache-mirror//activemq/apache-activemq/5.5.0/activemq-parent-5.5.0-source-release.zip 在国内,而且比较快,文件尺寸也合适。 日志引用编写断点续传客户端代码    发送文章为PDF   

星期一 七月 11th, 2011 in , , , | No Comments »

最简单的HttpClient应用

使用httpclient编写最简单的应用,获取我博客的主页。 httpclient在: http://hc.apache.org/ 首先要下载分发包。然后将分发包解压缩,将lib目录下的jar文件,导入到项目中来,比如这样: 日志引用使用ASIHTTPRequest获取文本HTTP响应HttpClient下载二进制文件    发送文章为PDF   

星期一 七月 11th, 2011 in , , , | No Comments »

列出当前设备的网卡以及Socket绑定特定网卡

这里是用Java写的示例。如何知道当前的设备有几个网卡: Enumeration<NetworkInterface> enumeration= NetworkInterface.getNetworkInterfaces(); while(enumeration.hasMoreElements()){      NetworkInterface networkInterface=enumeration.nextElement();      System.out.println(networkInterface); }   在我本机上显示: name:en1 (en1) index: 5 addresses: /192.168.0.172; /fe80:0:0:0:7aca:39ff:feb5:a315%5; name:lo0 (lo0) index: 1 addresses: /127.0.0.1; /fe80:0:0:0:0:0:0:1%1; /0:0:0:0:0:0:0:1;      发送文章为PDF   

星期三 七月 6th, 2011 in , , | No Comments »

java特殊格式的时间处理

在java里,对数据进行格式化处理的对象在java.text包中。比如:MessageFormat。一般来说,如果去某一天中的某个时间的格式显示可以: System.out.println(MessageFormat.format("当前时间:{0,time}", new Date())); 或者,用长整型数也可以: System.out.println(MessageFormat.format("当前时间:{0,time}", 123456789)); 得到的显示类似这样: 当前时间:10:25:44 不过,这个时间显示是带默认时区的,比如在中国,如果按照格林尼治时间是凌晨1点,会调整为上午9点,因为中国是东八区。 在特殊的场合,这种显示就不符合需求了。比如要写个播放器,里面需要显示视频播放的时长。 当然只要会java就可以写出格式化的方法。不过要注意的是,要考虑国际化/本地化的问题,如果在代码中写了本地化的文字提示,或者当前应用的文字,就不大好复用了。 这里写一个简单的代码,供有此需求的人参考: long time = 1000 * 3600 * 25 + 1000 * 60 * 5 + 1000 * 62; long sec = 1000; long min = 1000 * 60; long hour = min * 60; System.out.println(MessageFormat.format(         "{0,number,00}:{1,number,00}:{2,number,00}", time / hour, time                 [...]

星期一 一月 24th, 2011 in , | No Comments »

java对DWORD和TCHAR的处理

对端是WinCE,传输struct结构体内存数据的字节流(类似这样将struct结构数据保存到文件中)。这边是java,需要读取并用类似方式回传数据。 考虑了一下,有两种解决思路: 使用JNI,java通过socket获取到流的字节数组,然后通过JNI用本地C编程转换成java可用的数据结构,比如整型数和char数组,这种办法肯定可行,但是需要开发人员会运用C编程,另外这里是Android,还要牵扯到NDK,部署起来也不灵活; 使用纯java解决,java将字节数组通过转换和移位等操作转换为java可用的数据,比如long和String,这种办法较好,技术跨度小,部署和移植性好。 本文最终选择了后者实现了处理。 我们碰到的struct结构类似这样:    发送文章为PDF   

星期五 十一月 19th, 2010 in , , , , , | 1 Comment »

编写push notification之服务器端发送通知

在编写push notification之获取device token中拿到device token以后,需要把token字符串发送给应用的服务器端,即provider。 provider将token号、通知内容、通知形式(比如是否弹出提示窗口、是否发声等)发送给苹果的服务器(apns)。 最简单的provider实现,其实就是通过证书,和苹果服务器建立安全连接(tsl或ssl),通过认证建立连接后,向苹果服务器发送符合苹果要求的数据流。 获得证书 苹果提供两种接入方式的证书: developer,用于测试 production,用于产品    发送文章为PDF   

星期一 九月 27th, 2010 in , , , , , , | No Comments »