我正在用c#.net编写一个简易的网络聊天室,但是无法实现私聊,那位大神可以说一说具体思路吗?
用到session和application可以不!只是简易的聊天室而已!可以发邮箱leiling19921129@126.con还可以加财富值!...
用到session和application可以不!只是简易的聊天室而已!可以发邮箱leiling19921129@126.con还可以加财富值!
展开
2个回答
展开全部
先将用户1和用户2 添加到私聊聊天室中
用户1发送消息时,通知用户2,用户2收到消息,显示消息
用户2回送消息时,通知用户1,用户1收到消息,显示消息
abstract class 聊天室
{
protected List<用户 > list = new List<用户 >();
public abstract void Notify(用户 user);
public virtual void Add(用户 user)
{
list.Add(user);
}
}
class 私聊聊天室: 聊天室
{
public override void Notify(用户 user)
{
foreach (var item in list)
{
if (!(item is user))
{
(用户 )item.ShowMsg();
}
}
}
}
abstract class 用户
{
聊天室 lts;
public 用户(聊天室 lts)
{
this.lts=lts;
this.lts.Add(this);
}
public virtual void OnChange()
}
class 用户1 :用户
{
public 用户1(聊天室 lts):base(lts){}
public void SendMessge()
{
OnChange();
}
public void ShowMsg()
{
}
}
class 用户2 :用户
{
public 用户2(聊天室 lts):base(lts){}
public void SendMessge()
{
OnChange();
}
public void ShowMsg()
{
}
}
用户1发送消息时,通知用户2,用户2收到消息,显示消息
用户2回送消息时,通知用户1,用户1收到消息,显示消息
abstract class 聊天室
{
protected List<用户 > list = new List<用户 >();
public abstract void Notify(用户 user);
public virtual void Add(用户 user)
{
list.Add(user);
}
}
class 私聊聊天室: 聊天室
{
public override void Notify(用户 user)
{
foreach (var item in list)
{
if (!(item is user))
{
(用户 )item.ShowMsg();
}
}
}
}
abstract class 用户
{
聊天室 lts;
public 用户(聊天室 lts)
{
this.lts=lts;
this.lts.Add(this);
}
public virtual void OnChange()
}
class 用户1 :用户
{
public 用户1(聊天室 lts):base(lts){}
public void SendMessge()
{
OnChange();
}
public void ShowMsg()
{
}
}
class 用户2 :用户
{
public 用户2(聊天室 lts):base(lts){}
public void SendMessge()
{
OnChange();
}
public void ShowMsg()
{
}
}
更多追问追答
追问
我就是说用application来保存所有人聊天的文字,然后用字符串处理来分割成一条一条的文字。但是有一个问题是 ,我怎么知道是不是私聊,是和谁私聊啊!额额,能明白我自己的意思没有?
追答
其实我只是说一下个人想到一个思路,具体你是如何实现还是靠你自己。
按照以上思路举个例子,
当你想私聊时,你在点击某人想跟某人私聊时,在这里可以认为是新建了一个私聊聊天室,然后将自己和对方的加入该聊天室,当你发送信息时,就只会传给对方。
这里在新建聊天室时,你就可以认为该聊天室的类型是私聊聊天室。
到底和谁聊天呢?List list中只有自己和对方,所以只会和你点击的那个人进行消息交互
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询