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

📄 clientint.java

📁 这是本人在书上找到的项目,是一个网络聊天的程序.
💻 JAVA
字号:
/*
 * clientInt.java
 *
 * Created on 2007年12月2日, 下午10:02
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package appserver;

/**
 *
 * @author user
 */
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import javax.swing.Timer;


public class clientInt extends JFrame implements ActionListener { 
	Timer t = new Timer(5000,new TimerAction());                
	String usr_name;                
	public String remUser;
    class TimerAction implements ActionListener            
	{
		Socket toServer;                               
		ObjectInputStream streamFromServer;                               
		PrintStream streamToServer;                               
		public void actionPerformed(ActionEvent e2)                               
		{
			try{
				toServer = new Socket("wgqr-7f254dd399", 1001);
				streamFromServer = new ObjectInputStream(toServer.getInputStream());
				streamToServer = new PrintStream(toServer.getOutputStream());
				message = txtMsg.getText();
				
				//向服务器发送一消息
				streamToServer.println("Timer");
				//从服务器端接收Vector向量
				Vector vector = (Vector)streamFromServer.readObject();
				Vector vector1 =(Vector)streamFromServer.readObject();
				//显示在线用户                                              
				txtListUsers.setText("");
				for(int j = 1;j<vector1.capacity(); j++)
				{
					txtListUsers.append ((String)vector1.elementAt(j));
					txtListUsers.append("\n");                                              
				}
				//显示该消息                                              
				int i = messageCount;                                              
				for(;i<vector.capacity();i++)                                              
				{
					txtMessages.append((String)vector.elementAt(i));
					txtMessages.append("\n");                                              
				}
				messageCount = i;                               
			}// try块尾
			catch(Exception e)                               
			{                                              
				System.out.println("异常 "+e);                               
			}
		}// actionPerformed函数尾 
	}// TimerListener类结束
	int messageCount = 0; 
	String name; 
	PrintStream  streamToServer; 
	ObjectInputStream streamFromServer; 
	Socket toServer;
	JTextArea txtMessages; 
	JTextArea txtListUsers; 
	JTextField txtMsg; 
	JButton msgSendBtn; 
	JButton userLoginBtn; 
	JButton userRegisterBtn; 
	JButton userLogoutBtn;
	
	JLabel lblChatRoom; 
	JLabel lblUserList;
	JScrollPane jspSendMsgPane; 
	JScrollPane jspTxtMsgPane; 
	JScrollPane jspUserListPane;
	JTextField textWriteMsg; 
	String message; 
	int nSend;
	public clientInt(String nm){
		remUser = nm;                
		usr_name = nm;                
		this.setTitle("FunChat: "+usr_name); //设定窗体标题                
		JPanel panel = new JPanel();                
		panel.setLayout(new GridBagLayout());                
		GridBagConstraints gbCons = new GridBagConstraints();
		gbCons.gridx = 0;                
		gbCons.gridy = 0;                
		lblChatRoom = new JLabel("聊天室", SwingConstants.LEFT);                
		panel.add(lblChatRoom, gbCons);

        gbCons.gridx = 1;                
		gbCons.gridy = 0;
		lblUserList = new JLabel("在线用户", SwingConstants.LEFT);                
		panel.add(lblUserList, gbCons);
		
		gbCons.gridx = 0;                
		gbCons.gridy = 1;                
		gbCons.gridwidth = 1;                
		gbCons.gridheight = 1;                
		gbCons.weightx = 1.0;                
		gbCons.weighty = 1.0;                
		txtMessages = new JTextArea(25,35);                
		txtMessages.setEditable(false);
		jspTxtMsgPane = new JScrollPane(txtMessages,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        panel.add(jspTxtMsgPane, gbCons);
		
		gbCons.gridx = 1;                
		gbCons.gridy = 1;                
		gbCons.gridwidth = 1;                
		gbCons.gridheight = 1;                
		gbCons.weightx = 1.0;                
		gbCons.weighty = 1.0;                
		txtListUsers = new JTextArea(25,10);                
		txtListUsers.setEditable(false);                
		jspUserListPane = new JScrollPane(txtListUsers,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);                
		panel.add(jspUserListPane, gbCons);
		
		gbCons.gridx = 0;                
		gbCons.gridy = 2;                
		gbCons.gridwidth = 1;                
		gbCons.gridheight = 1;                
		gbCons.weightx = 1.0;                
		gbCons.weighty = 1.0;                
		txtMsg = new JTextField(35);
		
		jspSendMsgPane = new JScrollPane(txtMsg,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);                
		panel.add(jspSendMsgPane, gbCons);
		gbCons.gridx = 1;                
		gbCons.gridy = 2;                
		gbCons.gridwidth = 1;                
		gbCons.gridheight = 1;                
		gbCons.weightx = 1.0;                
		gbCons.weighty = 1.0;                
		gbCons.anchor = GridBagConstraints.WEST;                
		msgSendBtn = new JButton("发送");                
		panel.add(msgSendBtn, gbCons);
		
		msgSendBtn.addActionListener(this);
		JPanel btnPanel = new JPanel();
		userLogoutBtn = new JButton("退出");                
		userLogoutBtn.addActionListener(this);
		
		//向窗体添加事件侦听器                
		this.addWindowListener(
			new WindowAdapter()
			{
			public void windowClosing(WindowEvent e1){
				try{
					Socket toServer;                                                        
					ObjectInputStream streamFromServer;                                                        
					PrintStream streamToServer;                                                        
					toServer = new Socket("wgqr-7f254dd399",1001);
					streamToServer = new PrintStream(toServer.getOutputStream());
					streamToServer.println("User Logout");
					streamToServer.println(remUser);
				}// try块尾                                                  
				catch(Exception e2){
					System.out.println("发生异常: "+e2);
				}
			}
			}
		);
		btnPanel.add(userLogoutBtn);
		gbCons.gridx = 0;                
		gbCons.gridy = 3;                
		gbCons.gridwidth = 1;                
		gbCons.gridheight = 1;                
		gbCons.weightx = 1.0;                
		gbCons.weighty = 1.0;                
		gbCons.anchor = GridBagConstraints.EAST;                
		gbCons.fill = GridBagConstraints.HORIZONTAL;                
		panel.add(btnPanel, gbCons);
		
		getContentPane().add(panel);
		setDefaultCloseOperation(EXIT_ON_CLOSE);                
		setSize(546,587);
		setVisible(true);
		t.start();
	}// clientInt()函数结束 
	
	public void actionPerformed(ActionEvent e1)
	{
		JButton button = (JButton)e1.getSource();
		//若单击退出按钮,触发此事件  
		if(button.equals(userLogoutBtn))
		{
			try
			{
				toServer = new Socket("wgqr-7f254dd399",1001); 
				streamToServer = new PrintStream(toServer.getOutputStream());
				//退出时,向服务器发送退出消息
				streamToServer.println("User Logout");
				streamToServer.println(remUser);                               
			}
			catch(Exception e)
			{
				System.out.println("发生异常:"+e);
			}                               
			this.dispose();
		}
		//若单击“发送”按钮   
		else
		{
			int num1 = 0,num2 = 0,res = 0;
			String name = ""; 
			try
			{
				toServer = new Socket("wgqr-7f254dd399", 1001);
				streamFromServer = new ObjectInputStream(toServer.getInputStream());                                              
				streamToServer = new PrintStream(toServer.getOutputStream());
				message = txtMsg.getText();                                              
				String msg = message;
				//发送用户名和用户输入的聊天信息
				streamToServer.println(usr_name+":"+msg);
				txtMsg.setText("");
				//读取服务器的回应信息  
				Vector vector =(Vector)streamFromServer.readObject();                                              
				int i = messageCount;                                              
				for(;i<vector.capacity();i++)                                              
				{
					txtMessages.append((String)vector.elementAt(i)); //显示消息
					txtMessages.append("\n");
				}// for块结束                                              
				messageCount = i;
			}//try结束 
			catch(Exception e)
			{
				System.out.println("发生异常: "+e);                               
			}
		}//else块尾 
	}// actionPerformed()方法结束

	public static void main(String args[]) { 
		String nm = new String();
		clientInt CI = new clientInt(nm);
	}
}//类结束







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -