初学java,编写一个客户端与服务器端互相通话的小程序,却无法正常运行,求大神帮忙看看怎么回事儿
这是服务器端代码:
import java.io.*;
import java.net.*;
import java.awt.event.*;
import javax.swing.*;
public class ServerSocketFrame extends JFrame {
private PrintWriter writer;
private BufferedReader reader;
private ServerSocket server;
private Socket socket;
private JPanel jp = new JPanel();
private JTextArea jt = new JTextArea();
private JScrollPane js = new JScrollPane(jt);
private JTextField jName = new JTextField();
JLabel jl = new JLabel();
public ServerSocketFrame() {
jp.setLayout(null);
jName.setBounds(130, 15, 100, 20);
jp.add(jName);
js.setBounds(360, 80, 300, 300);
jp.add(js);
this.add(jp);
this.setTitle("chat sever");
this.setBounds(200, 200, 1000, 800);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getServer();
}
public void getServer() {
try {
jName.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
writer.print(jName.getText());
jt.append("服务器端发消息:"+jName.getText()+"\n");
jName.setText("");
}
});
server = new ServerSocket(8888);
jt.append("服务器套接字创建成功" + "\n");
jt.append("等待客户端连接" + "\n");
while(true){
socket = server.accept();
reader = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
// Thread.sleep(10000);
//writer.print("nihao");
//writer.print("wojiaolizeyu");
String line = reader.readLine();
jt.append("接受客户端发来的信息" + line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
try {
reader.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new ServerSocketFrame();
}
/*public void actionPerformed(ActionEvent e) {
writer.print(jName.getText());
jt.append("服务器发送的信息:" + jName.getText() + "\n");
jName.setText("");
writer.flush();
}
*/
}
这是客户端代码:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ClientSocketFrame extends JFrame {
JPanel jp = new JPanel();
private JTextArea jt = new JTextArea();
private JScrollPane js = new JScrollPane(jt);
private JTextField jName = new JTextField();
JLabel jl = new JLabel();
PrintWriter writer;
BufferedReader reader;
Socket socket;
public ClientSocketFrame() {
jp.setLayout(null);
jName.setBounds(130, 15, 100, 20);
jp.add(jName);
js.setBounds(360, 80, 300, 300);
jp.add(js);
this.add(jp);
this.setTitle("chat sever");
this.setBounds(200, 200, 1000, 800);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getClient();
}
public void getClient() {
try {
jName.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
writer.print(jName.getText());
jt.append("客户发消息:"+jName.getText()+"\n");
jName.setText("");
}
});
socket = new Socket("127.0.0.1", 8888);
System.out.println(socket);
jt.append("尝试连接..." + "\n");
while (true) {
writer = new PrintWriter(socket.getOutputStream(), true);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
jt.append("完成连接"+"\n");
System.out.println("dsf");
String line=reader.readLine();
System.out.println("eff");
System.out.println(line);
jt.append("接收服务器发来的信息" + line + "\n");
System.out.println("haha");
}
}
catch(Exception e){
e.printStackTrace();
}
finally {
try {
reader.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new ClientSocketFrame();
}
/* public void actionPerformed(ActionEvent e) {
writer.print(jName.getText());
jt.append("客户端发送消息"+jName.getText() + "\n");
jName.setText("");
}*/
}
求各路大神帮忙看看这个小程序哪里出问题了,多谢大家了!