java 聊天程序(服务器端)

这是一个Java程序,用于创建一个服务器端套接字(MServerSocket),处理用户的登录验证和消息传递。程序首先接收用户登录信息,验证用户名和密码是否匹配,如果正确则允许用户登录,并开始新的线程接收和发送消息。一旦套接字关闭,线程会停止接收。
摘要由CSDN通过智能技术生成
import java.net.*;
import java.io.*;
import java.util.*;

//this class is used by the Sever
public class MServerSocket extends vMSocket{
	public String myName;
	public static HashMap<String ,MServerSocket> msocDB=
  	  new  HashMap<String ,MServerSocket> ();

	public MServerSocket(Socket soc){
		super(soc);
		if(soc != null){
			String  r=super.receive(); //comfirm the login of the user
			String[] lst=r.split(":",2);
			if( lst.length==2){
			  String name= lst[0];//user name
			  String pswd= lst[1];//userpswd
				User u=User.userDB.get(name);
				//if the user is not online and the pswd is correct
				//then CONFORM him to login
				if(u.getStat()!=User.Stat.ONLINE  &&
					lst[1].equals(u.getPswd())){
					myName=lst[0];
					msend("CONFORM");
					u.setStat(User.Stat.ONLINE);
					msocDB.put(lst[0],this);
					start();  //start a new Thread to receive msg
				} else{ msend("NOT CONFORM"); }
			}
		}
	}

	public void run(){
		keepreceive();
		msocDB.remove(myName);
	}

	public void keepreceive(){
		while(!exitNow){
			if(super.soc.isClosed())
			  break;
			String str=super.receive();
			int i=str.indexOf(":");
			if(i != -1){
				String yourName=str.substring(0,i);
				String msg= str.substring(i,str.length());

				MServerSocket soc=msocDB.get(yourName);
				if(soc !=null){
					System.out.println(myName+" send  msg\""+ msg +"\" to "+yourName);
					soc.msend(this.myName + msg);
					try{ sleep(1000);
					}catch(InterruptedException e){ }
				}
			}
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值