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

📄 cssend.java

📁 基于java的图ou形化的聊天器
💻 JAVA
字号:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.util.Iterator;
import java.util.Vector;

/**
 * 服务器发送功能类
 * @author ij
 *
 */
public class CSSend {
	private Socket ssocket;
	static Vector namevec = new Vector();

	/**
	 * 根据操作符 添加客户端信息到集合中 发送信息
	 * @param cm
	 */
	public void sendMessage(ChatMessage cm) {
		ServerInfo si = null;
		String srcname = null;
		if (cm.getCurrent().equals("ptop")) {
			Iterator it = namevec.iterator();
			while (it.hasNext()) {
				si = (ServerInfo) it.next();
				if (CSUtil.compareSocket(ssocket, si.getClis())) {
					srcname = si.getCliname();
					
					break;
				}
			}
			Iterator it1 = namevec.iterator();
			while (it1.hasNext()) {
				si = (ServerInfo) it1.next();
				if (si.getCliname().equals(cm.getCliname())) {
					try {
						cm.setCliname(srcname);
						ObjectOutputStream oos = new ObjectOutputStream(si
								.getClis().getOutputStream());
						oos.write(1);
						oos.writeObject(cm);
						oos.flush();

						ObjectOutputStream oos1 = new ObjectOutputStream(
								ssocket.getOutputStream());
						oos1.write(1);
						oos1.writeObject(cm);
						oos1.flush();
					} catch (IOException e) {
						e.printStackTrace();
					}

					return;
				}
			}
		}

		if (cm.getCurrent().equals("isnetadds")) {
			if(!CSUtil.checkname(cm.getCliname())){
				addServerInfo(cm);
				sendnameerr(cm);
				return;
			}
			addServerInfo(cm);
			String message = allCliName();
			cm.setContent(message);

		} else if (cm.getCurrent().equals("sendname")) {
			String message = allCliName();
			cm.setContent(message);

		}

		int i = ChatServerSystem.socketvec.size();
		for (int j = 0; j < i; j++) {
			Socket s = (Socket) ChatServerSystem.socketvec.get(j);
			try {
				ObjectOutputStream oos = new ObjectOutputStream(s
						.getOutputStream());
				System.out.println("send to" + s.getInetAddress());

				oos.write(1);
				oos.writeObject(cm);
				oos.flush();
				System.out.println("send:" + cm.getContent());
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * 添加服务器信息到集合中
	 * @param cm
	 */
	public void addServerInfo(ChatMessage cm) {
//		System.out.println("************socket");
//		System.out.println(ssocket.getInetAddress());
//		System.out.println("************socket");
		ServerInfo si = new ServerInfo();
		si.setCliname(cm.getCliname());
		si.setClis(ssocket);
		namevec.add(si);
	}

	/**
	 * 将所有客户端昵称放到一个字符串中 返回字符串
	 * @return
	 */
	public String allCliName() {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < namevec.size(); i++) {
			sb.append(((ServerInfo) namevec.get(i)).getCliname());
//			System.out.println("************" + namevec.size());
			sb.append(",");
		}
		String message = new String(sb);
		return message;
	}
	
	/**
	 * 发送错误的客户端昵称到指定的客户端
	 * @param cm
	 */
	public void sendnameerr(ChatMessage cm){
		cm.setCurrent("nameerr");

		ObjectOutputStream oos;
		try {
			oos = new ObjectOutputStream(ssocket.getOutputStream());
			oos.write(1);
			oos.writeObject(cm);
			oos.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

	public Socket getSsocket() {
		
		return ssocket;
	}

	public void setSsocket(Socket ssocket) {
		this.ssocket = ssocket;
	}

}

⌨️ 快捷键说明

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