java代码client

package Client;

import java.io.Serializable;

import Server.ObjectTypeInterface;

public class ClientDataUserLogin  implements Serializable,ObjectTypeInterface{
	private static final long serialVersionUID = 1L;
	public String userId = null;
	public String password = null;
	public String className = null;
	public ClientDataUserLogin() {
		this.className = "ClientDataUserLogin";
		this.userId = "ClientDataUserLogin";//测试专用
	}
	public String getUserId() {
		return this.userId;
	}
	public void setUserId(String userId) {
		this.userId = userId;
	}

	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String ObjectType() {
		// TODO Auto-generated method stub
		return this.className;
	}
	@Override
	public String GetSenderUserId() {
		// TODO Auto-generated method stub
		return this.userId;
	}
}
package ClientMain;

public class ClientMain {
	public static void main(String[] args) throws InterruptedException {
		//ConnectServerData.setServerIP("127.0.0.1");
		ConnectServerData.setServerIP("172.16.28.38");
		ConnectServerData.setPort(8080);
		new SendMassage().start();
		new ReceiveMassage().start();
		while(true){
			Thread.sleep(2000);
			System.out.println(ReceiveMassageQueue.receiveMassageQueue.size());
		}
	}
}

package ClientMain;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

import Server.ObjectTypeInterface;

public class ConnectServer implements ObjectTypeInterface{
	public Socket socket   = null;
	public String serverIP = null;
	public int port ;
	public String className= null;
	public ConnectServer() throws UnknownHostException, IOException {
		this.className = "ConnectServer";
		serverIP = ConnectServerData.serverIP;
		port = ConnectServerData.port;
		SetConnectServerState();
	}
	public void SetConnectServerState() throws UnknownHostException, IOException {
		socket = new Socket(serverIP,port);
	}
	public Socket getSocket() {
		return socket;
	}
	@Override
	public String ObjectType() {
		// TODO Auto-generated method stub
		return className;
	}
	@Override
	public String GetSenderUserId() {
		// TODO Auto-generated method stub
		return null;
	}	
}

package ClientMain;

// 该对象只用初始化一次,启动客户的时候,输入连接IP和Port
public class ConnectServerData {
	public static String serverIP;
	public static int port;
	public static void setServerIP(String serverIP) {
		ConnectServerData.serverIP = serverIP;
	}
	public static void setPort(int port) {
		ConnectServerData.port = port;
	}	
}

package ClientMain;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import Server.ObjectTypeInterface;
import Client.ClientDataUserLogin;

public class ReceiveMassage extends Thread{
	ConnectServer connectServer = null;
	Socket socket = null;
	ObjectInputStream objectInputStream = null;
	ObjectOutputStream objectOutputStream = null;
	ObjectTypeInterface objectTypeInterface = null;
	public ReceiveMassage() {
		ReceiveMassageQueue.CreateReceiveMassageQueue(this);
	}
	public void run(){
		try {
			connectServer = new ConnectServer();
			socket = connectServer.getSocket();
			// 以下专用登陆功能*****************************************************
			objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
			objectTypeInterface = (ObjectTypeInterface)new ClientDataUserLogin();
			objectOutputStream.writeObject(objectTypeInterface);
			//******************************************************************
			
			objectInputStream = new ObjectInputStream(socket.getInputStream());
			while(true){
				objectTypeInterface = (ObjectTypeInterface)objectInputStream.readObject();
				ReceiveMassageQueue.AddObject(objectTypeInterface);
			}						
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	
}

package ClientMain;

import java.util.Vector;

import Server.ObjectTypeInterface;

public class ReceiveMassageQueue {
	public static Vector<ObjectTypeInterface> receiveMassageQueue = new Vector<ObjectTypeInterface>();
	public static Object receiveMassageQueueLock = null; // 这里应该接外部的锁
	public static void CreateReceiveMassageQueue(Object object) { //创建消息队列
		ReceiveMassageQueue.receiveMassageQueueLock = object;
	}				   
	public static void AddObject(ObjectTypeInterface objectTypeInterface){
		receiveMassageQueue.add(objectTypeInterface);
		synchronized (receiveMassageQueueLock) {
			receiveMassageQueueLock.notify();
		}
	}
	public static void IsEmpty() throws InterruptedException{
		synchronized (receiveMassageQueueLock) {
			if(receiveMassageQueue.isEmpty()){
				receiveMassageQueueLock.wait();
			}
		}
	}
	public static ObjectTypeInterface GetObject(){ // 接口
		synchronized (receiveMassageQueueLock) {
			if(receiveMassageQueue.isEmpty()){
				return null;
			}else {
				ObjectTypeInterface objectTypeInterface = receiveMassageQueue.firstElement();//获取第一个元素
				receiveMassageQueue.removeElementAt(0);//删除第一个元素
				return objectTypeInterface;
			}
		}
	}
}

package ClientMain;

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import Server.ObjectTypeInterface;

public class SendMassage extends Thread{
	ConnectServer connectServer = null;
	Socket socket = null;
	ObjectOutputStream objectOutputStream = null;
	ObjectTypeInterface objectTypeInterface = null;
	Object sendMassageLock = null;
	public SendMassage() {
		SendMassageQueue.GetSendMassageQueueLocak(this);
		sendMassageLock = new Object();
	}
	public void run(){
		try {
			connectServer = new ConnectServer();
			socket = connectServer.getSocket();
			objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
			while(true){
				synchronized (sendMassageLock) { //这里一定要同步
					SendMassageQueue.IsEmpty();
					objectTypeInterface = SendMassageQueue.GetObject();
					objectOutputStream.writeObject(objectTypeInterface);
				}
			}
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}		 
	}
}

package ClientMain;

import java.util.Vector;

import Server.ObjectTypeInterface;

public class SendMassageQueue {
	
	public static Vector<ObjectTypeInterface> sendMassageQueue = new Vector<ObjectTypeInterface>();
	private static Object sendMassageQueueLock = null;
	
	public static void GetSendMassageQueueLocak(Object object) {
		SendMassageQueue.sendMassageQueueLock = object; 
	}
	
	public static void IsEmpty() throws InterruptedException{
		synchronized (sendMassageQueueLock) {
			if(sendMassageQueue.isEmpty()){
				sendMassageQueueLock.wait(); // 将线程唤醒
			}
		}
	}
	public static void AddObject(ObjectTypeInterface objectTypeInterface){ // 接口
		sendMassageQueue.add(objectTypeInterface);
		synchronized (sendMassageQueueLock) {
			sendMassageQueueLock.notify();
		}
	}
	public static ObjectTypeInterface GetObject(){
		synchronized (sendMassageQueueLock) {
			ObjectTypeInterface objectTypeInterface = sendMassageQueue.firstElement();//获取第一个元素
			sendMassageQueue.removeElementAt(0);
			return objectTypeInterface;
		}
	}
}

package Server;

import java.io.Serializable;

public class ClientDataUserLoginState implements Serializable,ObjectTypeInterface{
	private static final long serialVersionUID = 2L;
	public String clientDataUserLoginState = null;
	public String UserId = null;
	public ClientDataUserLoginState(String clientDataUserLoginState) {
		// TODO Auto-generated constructor stub
		this.clientDataUserLoginState = clientDataUserLoginState;
	}
	@Override
	public String ObjectType() {
		// TODO Auto-generated method stub
		return this.clientDataUserLoginState;
	}
	@Override
	public String GetSenderUserId() {
		// TODO Auto-generated method stub
		return this.UserId;
	}
	public String getUserId() {
		return UserId;
	}
	public void setUserId(String userId) {
		UserId = userId;
	}
}

</pre><pre name="code" class="java">package Server;

public interface ObjectTypeInterface {
	String ObjectType();
	String GetSenderUserId();
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值