当前位置: 技术问答>java相关
高手给看一下,能不能实现
来源: 互联网 发布时间:2015-07-10
本文导语: 我在java的客户端程序中,使用下列语句: ClientSocket=new Socket(string,25); os=new PrintStream(new BufferedOutputStream(ClientSocket.getOutputStream())); is=new BufferedReader(new InputStreamReader(new BufferedInputStream(ClientSocket.getInputStream()))); 连接...
我在java的客户端程序中,使用下列语句:
ClientSocket=new Socket(string,25);
os=new PrintStream(new BufferedOutputStream(ClientSocket.getOutputStream()));
is=new BufferedReader(new InputStreamReader(new BufferedInputStream(ClientSocket.getInputStream())));
连接服务器。
可是我发现如果服务器关机,这个连接程序就像死机一样,半天不能点任何按钮。
我想设计一个取消按钮,但是应该如何编呢?高手给些指导。
ClientSocket=new Socket(string,25);
os=new PrintStream(new BufferedOutputStream(ClientSocket.getOutputStream()));
is=new BufferedReader(new InputStreamReader(new BufferedInputStream(ClientSocket.getInputStream())));
连接服务器。
可是我发现如果服务器关机,这个连接程序就像死机一样,半天不能点任何按钮。
我想设计一个取消按钮,但是应该如何编呢?高手给些指导。
|
用线程。启动一个线程连结服务器。这样你可以在主界面做一个按钮,关闭线程。
|
java中没有专门的连接超是设置,当向一个socket发送请求的时候,发送线程
就会自动阻塞,如果没有回复就永远在那儿了,超时的控制是要自己来实现的
如果只有一个线程,那么如果socket没有回复,你的程序就挂那儿了,所以要
用多线程来控制。
就会自动阻塞,如果没有回复就永远在那儿了,超时的控制是要自己来实现的
如果只有一个线程,那么如果socket没有回复,你的程序就挂那儿了,所以要
用多线程来控制。
|
设置一个连接超时,并把连接放在线程里
如果连接断开,可以收到一个 -1。
如果连接断开,可以收到一个 -1。
|
你可以利用多线程实现程序控制,并且可以控制连接超时
可以设置一个超时的时间段,由主控线程控制,定期检查
socket线程是否有回复,没有则判断为超时。
可以设置一个超时的时间段,由主控线程控制,定期检查
socket线程是否有回复,没有则判断为超时。
|
ClientSocket=new Socket(string,25);
端口号被规定为一个16位的整数0~65535。其中,0~1023被预先定义的服务通信占用(如telnet占用端口23,http占用端口80等)。除非我们需要访问这些特定服务,否则,就应该使用1024~65535这些端口中的某一个进行通信,以免发生端口冲突。
端口号被规定为一个16位的整数0~65535。其中,0~1023被预先定义的服务通信占用(如telnet占用端口23,http占用端口80等)。除非我们需要访问这些特定服务,否则,就应该使用1024~65535这些端口中的某一个进行通信,以免发生端口冲突。
|
对,换个端口试试.最好是用1024以上的.
|
Socket :setSoTimeout(int timeout)
|
对,应该使用多线程。