欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

JAVA socket编程(使用BufferedReader的readline()函数读取最后一行等待20S),bufferedreader20s

来源: javaer 分享于  点击 18131 次 点评:100

JAVA socket编程(使用BufferedReader的readline()函数读取最后一行等待20S),bufferedreader20s


作为Java菜鸟,虽说Java不熟,不过在这个模块这里卡住,也挺郁闷的。原计划使用的是HTTPCLIENT来进行读写操作的,其中曲折不再赘述,唯有吐槽
int result = httpclient.executeMethod(post);

这个东西出错,在网上找了下,百思不得其解。项目就要提交,不得不该用Java的socket编程来实现。

在servlet中创建套接口

		Socket sock1 = new Socket(serip,servport);
		
        //向服务器端发送数据    
		PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(  
                 sock1.getOutputStream())));
		//读取服务器端数据    
    	BufferedReader is = new BufferedReader(new InputStreamReader(sock1.getInputStream()));

接下来是准备通信内容 message="……";

组完字符串,就可以调用println()函数进行写出操作

out.println(message);
out.flush();
这个flush()是必须的,因为要实时刷新缓冲区,将写入的内容输出。

有写出,就有读入。参考网上的资料,因为要从服务器读取String类型的数据,所以选择使用BufferedReader 类的readline()来按行读取。在这里就碰到了一个挺坑的事情,就是在接收XML格式类型的字符串时,使用readline()接收最后一行数据,会阻塞近20S,这不是 闹么?根据网上资料,将其判断条件设为(str = is.readline()) != null 都没搞定,时间不多,最后只能取巧了。因为我只需要数据流中的某个字段值,所以用了个if()来截取我需要的数据,嘿嘿,反正老大也没辙,暂时只能这样了。

			do
			{
				if(str.indexOf("PurchaseToken=") != -1)
				{
					url = str.substring(str.indexOf("PurchaseToken=")+len+1, str.indexOf("PurchaseToken=")+len+33);
					break;
				}
			}while(str != null);
<pre name="code" class="javascript">代码基本就这样了,记录下,腾出手来在研究httpclient和这个闹心的readline();好心的大神看到小弟的拙作,希望多多指点小弟一二呀,不胜感激啊!
最后附上httpclient版本的错误提示
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SM]]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
	at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3750)
	at org.apache.catalina.startup.HostConfig.reload(HostConfig.java:1365)
	at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1348)
	at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1532)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:280)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1143)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1367)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1371)
	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1347)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Class.java:2436)
	at java.lang.Class.getDeclaredFields(Class.java:1806)
	at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
	at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:261)
	at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:140)
	at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:66)
	at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:332)
	at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:771)
	at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:303)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5058)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	... 12 more
Caused by: java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1328)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1175)
... 26 more


httpclient版本中导入的包




相关文章

    暂无相关文章
相关栏目:

用户点评