
我正在尝试做一些服务器/套接字编程.服务器代码在Ubuntu机器上用普通java编写.客户端代码是为我的LG Thrill编写的.服务器似乎工作正常.我通过在普通java中编写一个简单的测试客户端来测试服务器,该客户端基本上使用带有“localhost”ip的try / catch块.我检查了是否可以通过手机ssh进入服务器机器来访问ip(是的,它是可以访问的).
我的服务器代码如下:
package org.vsector.server;import java.io.IOException;import java.net.ServerSocket;public class SceneFlowServer { int port; Thread running = null; CameraHandler handler = null; public SceneFlowServer( int port, CameraHandler handler ){ this.port = port; this.handler = handler; } public voID start(){ if( handler == null ) return; try{ running = new Thread(){ public voID run(){ try{ ServerSocket Listen = new ServerSocket( port ); while( true ){ System.out.print( "I am waiting on port " + port + "... " ); handler.accept( Listen.accept() ); System.out.println( "Got someone!" ); Thread spinoff = new Thread( handler ); spinoff.start(); } }catch( IOException e ){ System.err.println( "Could not Listen on port " + port + "!" ); System.err.flush(); return; } } }; running.start(); running.join(); }catch( Exception e ){ System.err.println( "Could not start thread!" ); System.err.flush(); } }}我的CameraHandler代码:
package org.vsector.server;import java.io.BufferedReader;import java.io.IOException;import java.io.inputStreamReader;import java.net.socket;public class CameraHandler implements Runnable { Socket clIEnt = null; public CameraHandler(){ } public voID accept( Socket clIEnt ){ this.clIEnt = clIEnt; } @OverrIDe public voID run() { // Todo auto-generated method stub BufferedReader in; try { in = new BufferedReader( new inputStreamReader( clIEnt.getinputStream() )); System.out.println( in.readline() ); } catch (IOException e) { // Todo auto-generated catch block e.printstacktrace(); } try { clIEnt.close(); } catch (IOException e) { // Todo auto-generated catch block e.printstacktrace(); } }}我的客户端代码如下:
package org.vsector.clIEnt;import java.io.PrintWriter;import java.net.InetSocketAddress;import java.net.socket;import androID.app.Activity;import androID.os.Bundle;import androID.Widget.TextVIEw;public class ProcessingClIEntActivity extends Activity { /** Called when the activity is first created. */ @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.main); TextVIEw text = (TextVIEw) findVIEwByID( R.ID.textBox ); Socket sock; try { text.append( "\nopening and writing to socket... " ); sock = new Socket(); sock.connect( new InetSocketAddress( "some ip", 4444 ), 30000 ); PrintWriter out = new PrintWriter( sock.getoutputStream(), true ); out.println( "Hello!" ); out.close(); sock.close(); text.append( "Done!" ); } catch (Exception e) { // Todo auto-generated catch block e.printstacktrace(); text.append( "Error: " + e + "\n" ); text.append( e.getMessage() ); } }}权限已设置,但仍会导致“错误:java.net.socketTimeoutException:连接超时”.
我无法弄清楚是什么导致了它!有任何想法吗?
编辑:
没关系.网络问题.我在我的家庭网络上运行代码,一切正常.
解决方法:
老兄,尝试在它们之间添加flush():
out.println( "Hello!" );out.flush(); //add this lineout.close();你可以快速关闭插座……
总结以上是内存溢出为你收集整理的java – Android手机上的套接字连接超时全部内容,希望文章能够帮你解决java – Android手机上的套接字连接超时所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)