我有一個啓動與服務器連接的方法的主類。 在JFrame類我有一個按鈕註冊,當按下它將檢索用戶輸入並將其發送到服務器。 我的問題是,與服務器的連接不能正常工作,因爲傳遞主方法中的變量時出現錯誤。 我試圖在JFrame類中聲明連接的變量,並在構造函數中將它們分配給主類變量,但這也不起作用。如何將主類中的TCP連接變量傳遞給另一個JFrame類?
主類:
public class TCPClient {
Socket clientSocket;
DataOutputStream outToServer;
BufferedReader inFromServer;
String test;
public void start() throws Exception{
clientSocket= new Socket("localhost", 6789);
outToServer= new DataOutputStream(clientSocket.getOutputStream());
inFromServer= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
test="abc";
}
public static void main(String[] args) throws Exception {
TCPClient c=new TCPClient();
c.start();
NewJFrame j=new NewJFrame();
j.setVisible(true);
}}
JFrame類:
public class NewJFrame extends javax.swing.JFrame {
JTextField username = new JTextField();
JTextField name = new JTextField();
JTextField Email = new JTextField();
JTextField Address = new JTextField();
JTextField password = new JPasswordField();
BufferedReader inFromUser;
Socket clientSocket;
DataOutputStream outToServer;
BufferedReader inFromServer;
String test;
public NewJFrame() throws Exception {
TCPClient c=new TCPClient();
c.start();
inFromServer=c.inFromServer;
clientSocket=c.clientSocket;
outToServer=c.outToServer;
inFromServer=c.inFromServer;
test=c.test;
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
System.out.print(test);
Object[] message = {
"Full Name:", name,
"Email:", Email,
"Address:", Address,
"Username:", username,
"Password:", password
};
int option = JOptionPane.showConfirmDialog(null, message,"Sign in",JOptionPane.OK_CANCEL_OPTION);
try{
System.out.print(test);
outToServer.writeBytes("signup"+ '\n');
outToServer.writeBytes(name.getText() + '\n');
outToServer.writeBytes(Email.getText() + '\n');
outToServer.writeBytes(Address.getText() + '\n');
outToServer.writeBytes(username.getText() + '\n');
outToServer.writeBytes(password.getText() + '\n');
JOptionPane.showMessageDialog(null, inFromServer.readLine());
clientSocket.close();
}
catch(Exception e)
{
}
請展開「沒有工作」。發生了什麼?你期望會發生什麼? – jzd
服務器沒有從客戶端「outToServer.writeBytes()」接收,但是當我初始化jButton1ActionPerformed方法中的連接而不是主類時,它的工作原理 –
不確定這是否會幫助解決這個問題,但是捕獲Exceptions和什麼都不做是一個好主意。至少添加一個println以確保您沒有發生異常。 – jzd