⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chatoneserver.java

📁 是一个简单的客户端,服务器的聊天程序,可实现客户端和服务器的连接,并实现多方聊天
💻 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 + -