在Socket编程中,我再服务端写了如下代码
while (true) {
int port = Integer.parseInt(textField.getText());
try {
ServerSocket serverSocket = new ServerSocket(port);
Socket sk = serverSocket.accept();
BufferedReader bReader = new BufferedReader(
new InputStreamReader(sk.getInputStream()));
textArea.setText(bReader.readLine());
serverSocket.close();
bReader.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
这个方法是监听一个button按钮的,这个按钮的功能就是打开一个服务端口。我用了一个while(true),虽然是死循环,但是这样子为什么程序就不能运行呀?我知道这个可以用线程来解决,但是我觉得我自己这样写也没有错啊?至少程序可以运行吧。但是现在的问题是程序居然不能运行了,ServerSocket serverSocket = new ServerSocket(port);当运行到这句的时候,程序应该会停下来,发生阻塞。监听客户端的信息!所以这个循环式成立的呀?为什么不能执行?
while (true) {
int port = Integer.parseInt(textField.getText());
try {
ServerSocket serverSocket = new ServerSocket(port);
Socket sk = serverSocket.accept();
BufferedReader bReader = new BufferedReader(
new InputStreamReader(sk.getInputStream()));
textArea.setText(bReader.readLine());
serverSocket.close();
bReader.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
这个方法是监听一个button按钮的,这个按钮的功能就是打开一个服务端口。我用了一个while(true),虽然是死循环,但是这样子为什么程序就不能运行呀?我知道这个可以用线程来解决,但是我觉得我自己这样写也没有错啊?至少程序可以运行吧。但是现在的问题是程序居然不能运行了,ServerSocket serverSocket = new ServerSocket(port);当运行到这句的时候,程序应该会停下来,发生阻塞。监听客户端的信息!所以这个循环式成立的呀?为什么不能执行?
解决方案 »
- 有关jsp页面中out语句与FileReader的问题
- 怎么把一个非static变量的值赋给static变量,在线等!
- java如何自动的执行一个c语言的程序,然后将运行的结果记录下来呀?
- 做QQ时遇到的问题
- java 内存泄漏的问题,关于DatagramSocket.send和System.arraycopy
- 新手入门
- JNI调用dll出现Access Violation,从而导致jvm崩溃。
- 进来看看啊!
- 我的tomcat装在win2000 个人版可以用吗?jdk1.4可以安装在个人版上用吗?
- System.currentTimeMillis()函数相当于WINDOW里哪个函数?我用C++语言的话该调用哪个函数?
- Java的内部类实现多继承只是个噱头?
- 数组初始化的问题 在线等。。。
private JTextField textField;
private JTextArea textArea; /**
* Create the applet.
*/
public ServerGUI() {
getContentPane().setLayout(null); JPanel panel = new JPanel();
panel.setBounds(56, 33, 367, 239);
getContentPane().add(panel);
panel.setLayout(null); JButton button_1 = new JButton("\u53D1\u9001");
button_1.setBounds(74, 183, 57, 23);
panel.add(button_1); textField = new JTextField();
textField.setBounds(242, 91, 94, 26);
panel.add(textField);
textField.setColumns(10); JButton button = new JButton("\u6253\u5F00\u7AEF\u53E3");
button.setBounds(243, 124, 93, 23);
panel.add(button); textArea = new JTextArea();
textArea.setBounds(37, 35, 129, 122);
panel.add(textArea);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
action_Performed(e);
}
}); } public void action_Performed(ActionEvent e) {
while (true) {
int port = Integer.parseInt(textField.getText());
try {
ServerSocket serverSocket = new ServerSocket(port);
Socket sk = serverSocket.accept();
BufferedReader bReader = new BufferedReader(
new InputStreamReader(sk.getInputStream()));
textArea.setText(bReader.readLine());
serverSocket.close();
bReader.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
你把ServerSocket都关闭,肯定无法监听了。
serverSocket.close();
bReader.close();
serverSocket.close();
bReader.close();主要不是这个!我觉得我没改之前没有错啊!重新生成一个server么?应该思路是对的呀!
serverSocket.close();
bReader.close();主要不是这个!我觉得我没改之前没有错啊!重新生成一个server么?应该思路是对的呀!
。报错信息是什么?