手里有个项目,主要做bs+cs实现即时通讯,可以单聊,私聊群聊。cs主要是客户端,
bs就是用户了我现在是走的socket方法,进行通讯我现在可以给服务器发送信息,但是服务器给我信息我也能收到,但是前台不显示。贴代码://连接客户端
private void SendSocket()
{
labmsg.InnerText = "正在建立连接";
//连接
socket = new AsySocket(Cip, port);
socket.OnSended += new AsySocketEventHandler(socket_OnSended);
socket.OnSendTo += new AsySocketEventHandler(socket_OnSendTo);
socket.OnStringDataAccept += new StringDataAcceptHandler(socket_OnStringDataAccept); socket.OnClosed += new AsySocketClosedEventHandler(socket_OnClosed); try
{
socket.LinkObject.Connect(Cip, port);
}
catch
{
labmsg.InnerText = "连接失败"; return;
} labmsg.InnerText = "连接成功";
socket.BeginAcceptData();
}
void socket_OnSended(string SenderID, string EventMessage)
{
labcontent.Text += "<br/>我:"+txtcontent.Value.Trim();
}
void socket_OnClosed(string SocketID, string ErrorMessage)
{
//服务器关闭
Page.ClientScript.RegisterClientScriptBlock(GetType(), "key", "<script>alert('服务器关闭')</script>");
}
void socket_OnSendTo(string SenderID, string EventMessage)
{
throw new Exception("The method or operation is not implemented.");
}
void socket_OnStringDataAccept(string AccepterID, string AcceptData)
{
//AddMsg(AcceptData);
pmsg += AcceptData.ToString() + "<br/>";
labcontent.Text += AcceptData.ToString();
Page.ClientScript.RegisterStartupScript(GetType(), "key", "<script>almsg('"+AcceptData.ToString()+"');</script>");
}
private void AddMsg(string msg)
{
labcontent.Text += Environment.NewLine + msg;
} //发送信息
protected void btnsend_Click(object sender, EventArgs e)
{
socket.ASend("Me:" + txtcontent.Value.Trim() + AsySocket.EndChar);
}
void socket_OnStringDataAccept(string AccepterID, string AcceptData)
{}
次方法就是客户端回复给我的信息,但是他是属于无刷新的, 我设置断点,客户端给我发送信息,我能接收到,但是没办法在前台显示。 这应该怎么解决呢,后台能接受数据,前台也能显示呢??小弟分不多了先来 80吧
bs就是用户了我现在是走的socket方法,进行通讯我现在可以给服务器发送信息,但是服务器给我信息我也能收到,但是前台不显示。贴代码://连接客户端
private void SendSocket()
{
labmsg.InnerText = "正在建立连接";
//连接
socket = new AsySocket(Cip, port);
socket.OnSended += new AsySocketEventHandler(socket_OnSended);
socket.OnSendTo += new AsySocketEventHandler(socket_OnSendTo);
socket.OnStringDataAccept += new StringDataAcceptHandler(socket_OnStringDataAccept); socket.OnClosed += new AsySocketClosedEventHandler(socket_OnClosed); try
{
socket.LinkObject.Connect(Cip, port);
}
catch
{
labmsg.InnerText = "连接失败"; return;
} labmsg.InnerText = "连接成功";
socket.BeginAcceptData();
}
void socket_OnSended(string SenderID, string EventMessage)
{
labcontent.Text += "<br/>我:"+txtcontent.Value.Trim();
}
void socket_OnClosed(string SocketID, string ErrorMessage)
{
//服务器关闭
Page.ClientScript.RegisterClientScriptBlock(GetType(), "key", "<script>alert('服务器关闭')</script>");
}
void socket_OnSendTo(string SenderID, string EventMessage)
{
throw new Exception("The method or operation is not implemented.");
}
void socket_OnStringDataAccept(string AccepterID, string AcceptData)
{
//AddMsg(AcceptData);
pmsg += AcceptData.ToString() + "<br/>";
labcontent.Text += AcceptData.ToString();
Page.ClientScript.RegisterStartupScript(GetType(), "key", "<script>almsg('"+AcceptData.ToString()+"');</script>");
}
private void AddMsg(string msg)
{
labcontent.Text += Environment.NewLine + msg;
} //发送信息
protected void btnsend_Click(object sender, EventArgs e)
{
socket.ASend("Me:" + txtcontent.Value.Trim() + AsySocket.EndChar);
}
void socket_OnStringDataAccept(string AccepterID, string AcceptData)
{}
次方法就是客户端回复给我的信息,但是他是属于无刷新的, 我设置断点,客户端给我发送信息,我能接收到,但是没办法在前台显示。 这应该怎么解决呢,后台能接受数据,前台也能显示呢??小弟分不多了先来 80吧
解决方案 »
- 十万火急!RDLC报表分组问题,敬请各位请帮忙解决一下!
- 【复选框】 急需使用 希望大家提供下。有图看
- 新手求助!请大虾们帮下忙~~SOS!!!!
- 问个小问题!!
- 如何便利地将数组转换为ArrayList?
- 请问这种地址http://zjcwf.cn.alibaba.com是如何动态生成的?
- 数据库查询中中文column的问题?
- 怎么在aspx上动态加载web user control?
- 求助:并发冲突
- 大家用visio多吗?xde居然不能装在2000 server下??
- gridview中的模板列样式小问题
- GridVie中e.Row.Cells[3].ForeColor 设置了之后。。为啥连框架的颜色都变了?我只想里面的字变颜色啊。
Comet:基于 HTTP 长连接的“服务器推”技术跟Ajax轮询不一样的 楼主可以仔细研究下这篇文章 了解什么叫Comet然后再看
Asp.net 构建可扩展的的Comet Web 应用
这是yanghua_kobe兄翻译的一篇文章
英文地址是http://www.codeproject.com/KB/aspnet/CometAsync.aspx我现在的项目就是按照这个思路去做的 速度很不错