【发布时间】:2016-04-12 10:04:04
【问题描述】:
所以我有一个教程中的基本聊天,一切都很好,除了一件事没有消息。 我的意思是服务器也在运行客户端......但是发送按钮或其他什么有问题?是的,server.java 很慢,有时会冻结。我使用了 Netbeans 的框架选项。
这是客户
package chat;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
public class chat_client extends javax.swing.JFrame {
static DataInputStream din;
static DataOutputStream dout;
static Socket s;
public chat_client() {
initComponents();
}
private void msg_sendActionPerformed(java.awt.event.ActionEvent evt) {
try {
String msgout = "";
msgout = msg_text.getText().trim();
dout.writeUTF(msgout);
} catch(Exception e) {
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new chat_client().setVisible(true);
}
});
try {
s = new Socket("127.0.0.1",1201); //The Local address because the Computer is the same
din = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
String msgin = "";
while(msgin.equals("exit")) {
msgin = din.readUTF();
msg_area.setText(msg_area.getText().trim()+"\n Server:\t"+ msgin);
}
}catch (Exception e) {
}
}
}
这是服务器
package chat;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class chat_server extends javax.swing.JFrame {
static ServerSocket ss;
static Socket s;
static DataInputStream din;
static DataOutputStream dout;
public chat_server() {
initComponents();
}
msg_text.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
msg_textActionPerformed(evt);
}
});
msg_send.setText("Send");
msg_send.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
msg_sendActionPerformed(evt);
}
});
private void msg_textActionPerformed(java.awt.event.ActionEvent evt) {
}
private void msg_sendActionPerformed(java.awt.event.ActionEvent evt) {
try {
String msgout = "";
msgout = msg_text.getText().trim();
dout.writeUTF(msgout); // sending the server message to the client
} catch (Exception e) {
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new chat_server().setVisible(true);
}
});
String msgin = "";
try {
ss = new ServerSocket(1201); // The server starting port
s = ss.accept(); // allow Connection
din = new DataInputStream(s.getInputStream());
dout = new DataOutputStream(s.getOutputStream());
while(!msgin.equals("exit")) {
msg_area.setText(msg_area.getText().trim()+"\n"+msgin); //Displaying message
}
}catch(Exception e) {
}
}
}
【问题讨论】:
-
如果您的聊天程序没有发送消息,那么“一切正常”并不是首先想到的。无论如何,您需要自己调试代码,或者将给定的代码简化为更具可读性的示例
-
你说得对。我试着更清楚地编辑,这些是我写的部分。