📄 chatoneserver.java
字号:
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class ChatOneServer
{
public static void main(String[] args)
{
ChatServer objServer = new ChatServer();
objServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
objServer.setVisible(true);
}
}
class ChatServer extends JFrame implements Runnable
{
JLabel m_labelStatus;
JButton m_btnSend;
JTextArea m_taMsg;
JTextArea m_taSend;
Thread m_tdListen;
Socket m_skConn;
InputStream m_streamIn;
OutputStream m_streamOut;
DataManager m_objDbManager;
ChatServer()
{
setTitle("ChatServer");
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_labelStatus = new JLabel("Satus: non come in.");
m_btnSend = new JButton("Send");
m_taMsg = new JTextArea(15, 40);
m_taSend = new JTextArea(5, 40);
JPanel panelCenter = new JPanel(new FlowLayout(FlowLayout.CENTER));
m_btnSend.addActionListener(new ListenBtn());
panelCenter.add(m_labelStatus,BorderLayout.WEST);
panelCenter.add(m_taMsg, BorderLayout.CENTER);
panelCenter.add(m_taSend);
panelCenter.add(m_btnSend, BorderLayout.EAST);
this.add(panelCenter, BorderLayout.CENTER);
m_btnSend.setEnabled(false);
m_objDbManager = new DataManager();
m_tdListen = new Thread(this);
m_tdListen.start();
}
public void run()
{
byte[] sbRead = new byte[1024];
String strMsg;
int iRead;
ServerSocket skServer;
try
{
skServer = new ServerSocket(4088);
while(true)
{
Socket skAccept;
skAccept = skServer.accept();
if(m_skConn != null)
{
m_btnSend.setEnabled(false);
m_skConn.close();
}
m_streamIn = skAccept.getInputStream();
m_streamOut = skAccept.getOutputStream();
m_skConn = skAccept;
m_labelStatus.setText("Stauts: Connect to " + m_skConn.getInetAddress().toString());
m_btnSend.setEnabled(true);
try
{
while(true)
{
iRead = m_streamIn.read(sbRead);
strMsg = new String(sbRead, 0, iRead);
m_taMsg.append("Client:\n");
m_taMsg.append(strMsg + "\n");
m_objDbManager.saveContext("Server", strMsg);
}
}
catch(Exception exp)
{
}
}
}
catch(Exception exp)
{
}
}
private class ListenBtn implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
String strSend = "";
if(evt.getSource() == m_btnSend)
{
try
{
if(m_streamOut != null)
{
strSend = m_taSend.getText();
m_streamOut.write(strSend.getBytes());
m_taMsg.append("Server:\n" + strSend + "\n");
}
}
catch(Exception exp)
{
}
m_taSend.setText("");
m_objDbManager.saveContext("Server", strSend);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -