📄 chatoneclient.java
字号:
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class ChatOneClient
{
public static void main(String[] args)
{
ChatClient objServer = new ChatClient();
objServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
objServer.setVisible(true);
}
}
class ChatClient extends JFrame implements Runnable
{
JTextField m_tfIpAddr;
JButton m_btnConn;
JTextArea m_taMsg;
JTextArea m_taSend;
JButton m_btnSend;
Thread m_tdClient;
Socket m_skConn;
InputStream m_streamIn;
OutputStream m_streamOut;
ChatClient m_objMainFrame;
DataManager m_objDbManager;
ChatClient()
{
setTitle("ChatClient");
setSize(480, 600);
setResizable(false);
setLayout(new BorderLayout());
Dimension scnSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation(scnSize.width / 2 - this.getWidth() / 2, scnSize.height / 2 - this.getHeight() /2);
m_objMainFrame = this;
m_tfIpAddr = new JTextField("localhost", 15);
m_btnConn = new JButton("Connect");
m_taMsg = new JTextArea(15, 40);
m_taSend = new JTextArea(5, 40);
m_btnSend = new JButton("Send");
JPanel panelCenter = new JPanel(new FlowLayout(FlowLayout.CENTER));
ListenBtn listenConnSend = new ListenBtn();
m_btnConn.addActionListener(listenConnSend);
m_btnSend.addActionListener(listenConnSend);
panelCenter.add(m_tfIpAddr);
panelCenter.add(m_btnConn);
panelCenter.add(m_taMsg);
panelCenter.add(m_taSend);
panelCenter.add(m_btnSend);
this.add(panelCenter, BorderLayout.CENTER);
m_objDbManager = new DataManager();
m_btnSend.setEnabled(false);
}
public void run()
{
byte[] sbRead = new byte[1024];
int iRead;
String strRead;
try
{
while(true)
{
iRead = m_streamIn.read(sbRead);
strRead = new String(sbRead, 0, iRead);
m_taMsg.append("Server:\n");
m_taMsg.append(strRead + "\n");
m_objDbManager.saveContext("Client", strRead);
}
}
catch(Exception exp)
{
System.out.println("Database Error");
System.out.println(exp.getMessage());
}
}
private class ListenBtn implements ActionListener
{
String strMsg;
public void actionPerformed(ActionEvent evt)
{
if(evt.getSource() == m_btnSend)
{
try
{
if(m_streamOut != null)
{
strMsg = m_taSend.getText();
m_streamOut.write(strMsg.getBytes());
m_taMsg.append("Client:\n" + strMsg + "\n");
m_objDbManager.saveContext("Client", strMsg);
}
}
catch(Exception exp)
{
System.out.println("Database Error");
System.out.println(exp.getMessage());
}
m_taSend.setText("");
}
else if(evt.getSource() == m_btnConn)
{
try
{
if(m_skConn != null)
{
m_skConn.close();
}
m_skConn = new Socket(m_tfIpAddr.getText(), 4088);
m_streamIn = m_skConn.getInputStream();
m_streamOut = m_skConn.getOutputStream();
if(m_tdClient != null)
{
m_tdClient.interrupt();
}
m_tdClient = null;
m_tdClient = new Thread(m_objMainFrame);
m_tdClient.start();
m_btnConn.setEnabled(false);
m_btnSend.setEnabled(true);
}
catch(Exception exp)
{
System.out.println("Connection failed.");
System.out.println(exp.getMessage());
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -