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

📄 clientclass.java

📁 一个实现网络会议的软件.包含三个包.其中一个包需JMF的支持.
💻 JAVA
字号:
package clientPackage;

import java.awt.Point;
import java.beans.PropertyChangeSupport;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import java.rmi.Naming;
import java.util.Hashtable;
import java.util.Vector;
import java.net.*;
import mediaPackage.Constants;
import serverPackage.*;
public class ClientClass extends Thread{
	private ServerFace remote;
	private ServerSocket listener;
	private Socket socket;
	private ObjectInputStream input;
	private PropertyChangeSupport propertySupport;
	private String myName;
	private int audioPort=2000;
	public ClientClass(String hostName, String portNumber) {
		propertySupport=new PropertyChangeSupport(this);
		try{
		String serverObject="//"+hostName+"/ServerClass";
		remote=(ServerFace)Naming.lookup(serverObject);
		listener=new ServerSocket(Constants.LISTEN_PORT+0,1);
		this.start();
		}catch(Exception e0){
			System.err.println("error in ClientClass Constructor");
			System.exit(0);
		}
	}
    public void run(){
    	try{
    		socket=listener.accept();
    		input=new ObjectInputStream(socket.getInputStream());
    		while (true){
    			int type=((Integer)input.readObject()).intValue();
    			switch(type){
    			case Constants.START_SESSION:
    				propertySupport.firePropertyChange("startSession",null,null);
    				break;
    			case Constants.STOP_SESSION:
    				propertySupport.firePropertyChange("stopSession",null,null);
    				break;
    			case Constants.SAY_YES:
    				propertySupport.firePropertyChange("sayYes",null,null);
    				break;
    			case Constants.SAY_NO:
    				propertySupport.firePropertyChange("sayNo",null,null);
    				break;
    			case Constants.LOGOUT_USER:
    				String name=(String)input.readObject();
    				propertySupport.firePropertyChange("removeUser",name,null);
    				break;
    			case Constants.LOGIN_USER:
    				UserConfig uConfig=(UserConfig)input.readObject();
    				propertySupport.firePropertyChange("addUser",null,uConfig);
    				break;
    			case Constants.PRIVATE_CHAT:
    				Vector v=new Vector();
    				String msg=(String)input.readObject();
    				String from=(String)input.readObject();
    				String to=(String)input.readObject();
    				v.add(msg);
    				v.add(from);
    				v.add(to);
    				v.add(new Integer(Constants.PRIVATE_CHAT));
    				propertySupport.firePropertyChange("receiveMessage",null,v);
    				break;
    			case Constants.PUBLIC_CHAT:
    				v=new Vector();
    				msg=(String)input.readObject();
    				from=(String)input.readObject();
    				to=(String)input.readObject();
    				v.add(msg);
    				v.add(from);
    				v.add(to);
    				v.add(new Integer(Constants.PUBLIC_CHAT));
    				propertySupport.firePropertyChange("receiveMessage",null,v);
    				break;
    			case Constants.RAISE_HAND:
    				propertySupport.firePropertyChange("raiseHand",null,null);
    				break;
    			case Constants.LOWER_ALL_HANDS:
    				propertySupport.firePropertyChange("lowerAllHands",null,null);
    				break;
    			case Constants.LOWER_HAND:
    				propertySupport.firePropertyChange("lowerHand",null,null);
    				break;
    			case Constants.STEP_IN_OUT:
    				propertySupport.firePropertyChange("stepInOut",null,null);
    				break;
    			case Constants.CLEAR_YES_NO:
    				propertySupport.firePropertyChange("clearYesNo",null,null);
    				break;
    			case Constants.UPDATE_CONTENT_MANAGER:
    				String url=(String)input.readObject();
    				propertySupport.firePropertyChange("addURL",null,url);
    				break;
    			case Constants.URL_CHANGED:
    				url=(String)input.readObject();
    				propertySupport.firePropertyChange("selectionChanged",null,url);
    				break;
    			}
    		}
    	}catch(Exception e0){
    		System.err.println("error in run");
    		e0.printStackTrace();
    		System.exit(0);
    	}
    }
    private void error(String err){
    	System.err.println(err);
    	System.exit(0);
    }
	public void registerUser() {
		try{
		}catch(Exception e){
			e.printStackTrace();
			error("in registerUser");
		}
		
	}

	public void addPropertyChangeListener(ClientUI clientUI) {
		propertySupport.addPropertyChangeListener(clientUI);
	}


	public void logoutUser(String myName) {
		try{
			remote.logoutUser(myName);
		}catch(Exception e){
			error("in logoutUser");
		}
	}


	public Hashtable getUsersConfig() {
		try{
			return remote.getUsersConfig();
		}catch(Exception e){
			e.printStackTrace();
			error("in getUsersConfig");
		}
		return null;
	}


	public Hashtable getURLTable() {
		try{
			return remote.getURLTable();
		}catch(Exception e){
			error("in getUrlTable");
		}
		return null;
	}


	public Vector getChatMessages() {
		try{
			return remote.getChatMessages();
		}catch(Exception e){
			error("in getChatMessage");
		}
		return null;
	}


	public void startSpeaking() {
		try{
			
		}catch(Exception e){
			error("");
		}
	}


	public String getMicLocker() {
		try{
			remote.getMicLocker();
		}catch(Exception e){
			error("in getMicLocker");
		}
		return null;
	}


	public void stopSpeaking() {
		try{
			
		}catch(Exception e){
			error("");
		}

	}


	public void sayYes() {
		try{
			remote.sayYes(myName);
		}catch(Exception e){
			error("in sayYes");
		}
		
	}


	public void sayNo() {
		try{
			remote.sayNo(myName);
		}catch(Exception e){
			error("say No");
		}
		
	}


	public void raiseHand() {
		try{
			remote.raiseHand(myName);
		}catch(Exception e){
			error("raiseHand");
		}

	}


	public void lowerHand() {
		try{
			remote.lowerHand(myName);
		}catch(Exception e){
			error("in LowerHand");
		}
		
	}


	public void stepInOut() {
		try{
			remote.stepInOut(myName);
		}catch(Exception e){
			error("stepInOut");
		}
		
	}


	public void lowerAllHands() {
		try{
			remote.lowerAllHands();
		}catch(Exception e){
			error("in lowerAllHands");
		}
		
	}


	public void clearYesNo() {
		try{
			remote.clearYesNo();
		}catch(Exception e){
			error("clearYesNo");
		}
		
	}


	public void giveMicToNext() {
		try{
			remote.giveMicToNext();
		}catch(Exception e){
			error("giveMicToNext");
		}
	}


	public void sendFeedback(int i, int j) {
		try{
			remote.sendFeedback(i,j);
		}catch(Exception e){
			error("sendFeedback");
		}
	}


	public void presenterURLChanged(String newURL) {
		try{
			remote.presenterURLChanged(newURL);
		}catch(Exception e){
			error("URLChanged");
		}
	}


	public void drawDot(Point point) {
		try{
			
		}catch(Exception e){
			error("");
		}
	}


	public void uploadURL(String url) {
		try{
			remote.startReceivingFile(url,null,0);
		}catch(Exception e){
			error("");
		}
	}


	public void uploadFile(File file) {
		try{
			remote.startReceivingFile("file:\\"+file.getName(),InetAddress.getLocalHost(),Constants.FILE_UPLOAD_PORT);
			ServerSocket serverSocket=new ServerSocket(Constants.FILE_UPLOAD_PORT,1);
			Socket socket=serverSocket.accept();
			BufferedOutputStream out=new BufferedOutputStream(socket.getOutputStream());
			FileInputStream in=new FileInputStream(file);
			int ch;
			while ((ch=in.read())!=-1) out.write(ch);
			out.close();
			in.close();
			socket.close();
			serverSocket.close();
		}catch(Exception e){
			error("in uploadfile");
		}
	}


	public void setMyCategory(int myCategory) {
		try{

		}catch(Exception e){
			error("");
		}
	}


	public int loginUser(String myName, String myPassword, int myCategory) {
		try{
			this.myName=myName;
			return remote.loginUser(myName,myPassword,myCategory,InetAddress.getLocalHost().getHostAddress(),audioPort);
		}catch(Exception e){
			e.printStackTrace();
			error("loginUser");
		}
		return Constants.NONE;
	}


	public boolean getSessionInfo() {
		try{
			return remote.getSessionInfo();
		}catch(Exception e){
			error("getSessionInfo");
		}
		return false;
	}


	public int[] receiveFeedback() {
		try{
			return remote.receiveFeedback();
		}catch(Exception e){
			error("in receivefeedback");
		}
		return null;
	}


	public void clearFeedback() {
		try{
			remote.clearFeedback();
		}catch(Exception e){
			error("");
		}
	}


	public void broadcastMessage(String msg, String sender, String receiver, Integer type) {
		try{
			remote.broadcastMessage(msg,sender,receiver,type);
		}catch(Exception e){
			error("in broadcast");
		}
	}


	public void stopSession() {
		try{
			remote.stopSession();
		}catch(Exception e){
			error("in stopsession");
		}
	}


	public void startSession() {
		try{
			remote.startSession();
		}catch(Exception e){
			error("startSession");
		}
	}
	private String getFileName(String urlStr)
	{
		if (urlStr == "" || urlStr == null)
		{
			System.out.println("In clientclass class: URL is empty.");
			return null;
		}
		
		int nameStartIndex = urlStr.lastIndexOf("/");
		if(nameStartIndex == -1)
			nameStartIndex = urlStr.lastIndexOf("\\");		
		if(nameStartIndex == -1)
			nameStartIndex = urlStr.lastIndexOf("//");
		
		String fileName = null;
		if(nameStartIndex != -1)
			fileName = urlStr.substring(nameStartIndex + 1);
		else
		{
			System.out.println("URL form error: " + urlStr 
						+ "\n URL should be in the form of protocol://Path/FileName");
		}
		return fileName;
	}

}

⌨️ 快捷键说明

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