java网络编程程序问题,客户端窗体关闭不了
/**再建立TCP客户端程序。由于是本地连接,TCP服务器的IP地址是127.0.0.1,客户端需要通过服务器的8866端口建立连接完成通信,所以在客户端指定要与服务器连...
/**
再建立TCP客户端程序。由于是本地连接,TCP服务器的IP地址是127.0.0.1,客户端需要通过服务器的8866端口建立连接完
成通信,所以在客户端指定要与服务器连接的端口号为8866.同样,客户端利用创建的Socket对象来获得输出流对象。通过
输出流向服务器端发送字符串。
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class TCPClient extends Frame{
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
TextField tf = new TextField(40);
List list = new List(6);
public static void main(String[] args){
TCPClient client = new TCPClient();
client.list.add("向服务器端发送的数据:");
client.setTitle("客户端");
client.run();
}
public void run(){
setLocation(400,300); //设置窗体的位置
this.setSize(300,300); //设置窗体的大小
add(tf,BorderLayout.SOUTH);
add(list,BorderLayout.NORTH);
pack();
this.addWindowListener(new WindowAdapter(){ //关闭窗体
public void windowClosing(WindowEvent e){
disconnect();
System.exit(0);
}
});
tf.addActionListener(new MyListener()); //注册事件监听器
setVisible(true);
connect();
}
public void connect(){
try{
s = new Socket("127.0.0.1",8866); //创建一个向服务器端发起连接的Socket对象
dos = new DataOutputStream(s.getOutputStream());
}catch(UnknownHostException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
public void disconnect(){
try{
dos.close(); //关闭输出流
s.close(); //关闭Socket对象
}catch(IOException e){
e.printStackTrace();
}
}
private class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String s1 = null;
String s2 = null;
String str = tf.getText().trim(); //获取文本框中的内容
list.add(str);
tf.setText(""); //将文本框的内容清空
try{
dos.writeUTF(str); //向输入流中写入数据
dos.flush(); //刷新输出流
}catch(IOException e1){
e1.printStackTrace();
}
}
}
} 展开
再建立TCP客户端程序。由于是本地连接,TCP服务器的IP地址是127.0.0.1,客户端需要通过服务器的8866端口建立连接完
成通信,所以在客户端指定要与服务器连接的端口号为8866.同样,客户端利用创建的Socket对象来获得输出流对象。通过
输出流向服务器端发送字符串。
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class TCPClient extends Frame{
Socket s = null;
DataOutputStream dos = null;
DataInputStream dis = null;
TextField tf = new TextField(40);
List list = new List(6);
public static void main(String[] args){
TCPClient client = new TCPClient();
client.list.add("向服务器端发送的数据:");
client.setTitle("客户端");
client.run();
}
public void run(){
setLocation(400,300); //设置窗体的位置
this.setSize(300,300); //设置窗体的大小
add(tf,BorderLayout.SOUTH);
add(list,BorderLayout.NORTH);
pack();
this.addWindowListener(new WindowAdapter(){ //关闭窗体
public void windowClosing(WindowEvent e){
disconnect();
System.exit(0);
}
});
tf.addActionListener(new MyListener()); //注册事件监听器
setVisible(true);
connect();
}
public void connect(){
try{
s = new Socket("127.0.0.1",8866); //创建一个向服务器端发起连接的Socket对象
dos = new DataOutputStream(s.getOutputStream());
}catch(UnknownHostException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
public void disconnect(){
try{
dos.close(); //关闭输出流
s.close(); //关闭Socket对象
}catch(IOException e){
e.printStackTrace();
}
}
private class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String s1 = null;
String s2 = null;
String str = tf.getText().trim(); //获取文本框中的内容
list.add(str);
tf.setText(""); //将文本框的内容清空
try{
dos.writeUTF(str); //向输入流中写入数据
dos.flush(); //刷新输出流
}catch(IOException e1){
e1.printStackTrace();
}
}
}
} 展开
2个回答
展开全部
那是因为没有触发关闭事件的地方,你那里只添加了一个关闭中的事件处理
在main里追加
client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
在main里追加
client.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
追问
需要导入什么包?
追答
不需要任何包啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询