求救!小弟写了一个java的服务端部分,但是无法正常关闭。

原创 2017年01月03日 05:24:22
写了一个socket服务端程序,但是加入界面之后,程序关闭之后端口一直无法关闭。好像是socket端口关闭有问题,求修正方法源程序如下code=Java]import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;

import javax.swing.JOptionPane;

public class Se1 extends WindowAdapter implements ActionListener {
private ServerSocket server;

private Socket socket;

private BufferedReader in;

private PrintWriter out;

JFrame f;

JPanel p;

JButton b1, b2, b3;

JTextField tf;

public Se1() {
f = new JFrame("Socked Server");
b1 = new JButton("Agree!");
b1.setActionCommand("agree");
b1.addActionListener(this);
b2 = new JButton("Disagree!");
b2.setActionCommand("disagree");
b2.addActionListener(this);
b3 = new JButton("Connect!");
b3.setActionCommand("connect");
b3.addActionListener(this);
p = new JPanel();
p.add(b1);
p.add(b2);
p.add(b3);
f.getContentPane().add(p, "North");
tf = new JTextField();
f.getContentPane().add(tf, "Center");
f.setSize(400, 150);
f.setVisible(true);
try {
server = new ServerSocket(10000);
while (true) {
socket = server.accept();
String RemoteIp = socket.getInetAddress().getHostAddress();
String RemotePort = " : " + socket.getLocalPort();
tf.setText("有学生想申请使用投影仪!  IP: " + RemoteIp + " Port"
+ RemotePort);
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
out = new PrintWriter(socket.getOutputStream());
String line = in.readLine();
String[] student = line.split(",");
tf.setText("该学生名字: " + student[0] + "   座位号: " + student[1]
+ "\n" + " 是否允许该学生使用投影仪?");

// System.out.println("该学生名字 : " + line);
// out.println("your message received " );
// String st = JOptionPane.showInputDialog("permit or not ?");
// System.out.println("是否允许该学生使用投影仪?");
// BufferedReader st = new BufferedReader(new
// InputStreamReader(System.in));
//
// out.println(st.readLine());
//
// out.close();
// in.close();
// socket.close();
}
} catch (IOException ex) {
out.println("出错");
}

}

public static void main(String[] args) {
Server be = new Server();
// be.Server();
}

public void actionPerformed(ActionEvent e) {
String s1 = "同意请求!", s5 = "本机连接";
String s2 = "拒绝请求!";
String s3 = "yes", s4 = "no";
if (e.getActionCommand() == "agree") {
tf.setText(s1);
out.println(s3);
// out.close();
} else if (e.getActionCommand() == "disagree") {
tf.setText(s2);
out.println(s4);
// out.close();
} else if (e.getActionCommand() == "connect") {
java.lang.Process pro = null;
Runtime rt = Runtime.getRuntime();
tf.setText("本机打开投影仪");
String s = "\"C:\\NSC.exe\"";
try {
pro = rt.exec(s);
} catch (IOException ex) {
ex.printStackTrace();

}
}
}

/*public void windowClosed(WindowEvent e) {
try {
in.close();
out.close();
socket.close();
} catch (IOException ex) {
out.println("出错");
}
System.exit(0);
}*/
}
[/code]

CLOSE_WAIT导致服务端无法正常连接(JAVA、SOCKET相关)

CLOSE_WAIT导致无法连接服务端 问题描述 1. 项目部署到linux 服务器之后,运行一段时间(大概几个钟),会开始出现一些未释放的TCP连接(状态CLOSE_WAIT) ...
  • tomwuli
  • tomwuli
  • 2013年04月19日 21:02
  • 2668

随手写了一个linux服务端与window客户端的epoll程序,当做练习把。

linux服务端:监听链接,处理消息 #include     #include     #include     #include     #include     #incl...
  • wscxr57
  • wscxr57
  • 2013年08月12日 17:34
  • 1048

随手写了一个简单的socket服务端和客户端

先开启服务端,在开启客户端。向服务端命令窗口输入字符,按ENTER键,则字符发送子客户端。之后客户端也可以发送字符至服务端。   服务端程序: #include #include mai...
  • wscxr57
  • wscxr57
  • 2012年07月31日 09:22
  • 367

初试android,写了个2个服务端springmvc基于htpp协议的json互传和传统soap协议的webservice

android没啥好看的,很简单,主要看看服务端实现吧 先看看springmvc提供的json互传核心代码@RestController public class Text { @Reques...

用Python写了个websocket即时聊天网页(含客户端、服务端代码)

其他的不说,原理自己搜下,直接上代码 客户端代码: WebSocket *{font-family: "微软雅黑"; margin: 0; ...

写了个小工具FaultTestTools,专用于服务端故障注入

""" auth : wenshan time :  version : v1.0.0 """ import main import time if __name__ == "_...

使用 Eclipse 和 Java SE 6 创建独立 Web Services 应用程序,第 1 部分: Web Services 服务端应用程序

创建项目 下一步,您将创建一个项目来构造 Web Services 服务端。项目包含源代码和其他相关文件,并允许您使用项目作为源文件的容器,或在项目中设置文件夹以对文件进行组织。 选择...

java中自己实现一个服务端对应多个客户端的简单代码

服务端代码:public class MyServer { public static void main(String[] args) { new MyServer().in...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:求救!小弟写了一个java的服务端部分,但是无法正常关闭。
举报原因:
原因补充:

(最多只允许输入30个字)