下面这段程序编译总是出错,, 小弟不知道怎么改, 恳请高手帮忙。。
今晚在先等答复
//文件保存名: Server.java
import java.net.*;
import java.io.*;
/** 服务器类 */
public class Server {
private ServerSocket ss; //声明服务器对象;
private Socket socket;//声明客户端对象;
private BufferedReader in;//声明输入流对象;
private PrintWriter out;
/**
* 构造方法
*/
public Server() {
try {
ss = new ServerSocket(10000);//建立一个接口为10000的服务器
while(true) {
socket = ss.accept();//接受客户端
in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
String line = in.readLine();//存储读取客户端信息
out.println("you input is :" + line);
out.close();
in.close();
socket.close();
}
ss.close();//此处报错 : D:\程序代码\Socket\Server.java:37: unreachable statement
//ss.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Server();
}
}
----------------解决方案--------------------------------------------------------
怎么没人啊
----------------解决方案--------------------------------------------------------
没人??。。。。。
----------------解决方案--------------------------------------------------------
import java.net.*;
import java.io.*;
/** 服务器类 */
public class Server {
private ServerSocket ss; //声明服务器对象;
private Socket socket;//声明客户端对象;
private BufferedReader in;//声明输入流对象;
private PrintWriter out;
/**
* 构造方法
*/
public Server() {
try {
ss = new ServerSocket(10000);//建立一个接口为10000的服务器
while(true) {
socket = ss.accept();//接受客户端
in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
String line = in.readLine();//存储读取客户端信息
System.out.println("you input is :" + line);
out.close();
in.close();
socket.close();
ss.close();//此处报错
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Server();
}
}
ss对象是在try语句内产生的,在try语句块以外不能访问?是不是这个原因啊!
----------------解决方案--------------------------------------------------------
很感谢楼上的能帮我看...
不过不是这个错误饿...
ss.close() 我包含在Try 块中了。。 我是用JBuilder2005编译的,unreachable statement 编译器提示的错误信息 仅仅是unreachable statement ss.close();
(不能够执行 ss.close() 语句).
----------------解决方案--------------------------------------------------------
unreachable statement
到达不了的地方
你想想你,你把那个语句放在while(true)后面,怎么可能会执行那一句呢
一万年也执行不到那一句啊
因为你在while(true)里面没有跳出的语句.
明白了吗
----------------解决方案--------------------------------------------------------
还是老大厉害,我说的怎么把ss.close();放到while里虽然不报错了,可是程序却不能执行呢!原来没有跳出循环!
----------------解决方案--------------------------------------------------------
恩~明白了..
多谢 千里冰峰,
----------------解决方案--------------------------------------------------------
当程序执行到socket = ss.accept();这句的时候就是在等待客户机的连接,只有客户机连接上了才会执行下面的语句
不知道俺说的对不对,嘿嘿~~献丑了
----------------解决方案--------------------------------------------------------
en ~ 对
是的,, 楼上说的没错.
----------------解决方案--------------------------------------------------------