解决方案 »
- 三层架构简单问题
- ASP.NET 中怎么获取一个表中的主键,然后取出这列的值
- 想要一个Oracle的特殊查询,大家帮忙看看
- 怎么把数据库查询的内容放入文本框
- 如何使用C#设置,得到本地安全策略的某些项的值
- 求算法,解决即给分,在线等,急
- 终于在国外的网站上找到了真正免费的EAN-13 的条码字体.有VB使用例子..
- blob类型数据存储问题,高手进!!
- 狂不爽,就这么小个问题,水源怎么没有人解决阿,是不屑还是不会,我都发贴2次了,都沉下去了,郁闷至及(送分180)
- c#也用了2 3个月了,突然发现,不知道怎么察看已经编了的代码行数
- CreateDirectory执行没有抛出异常,但是也没有成功创建目录,这是为什么?
- Xamarin开发的一个简单画图程序分享
而且你的心跳的方法 不就是发送数据嘛.....
client.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, new AsyncCallback(BeginSendDataCallBack), client);
client.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, new AsyncCallback(BeginHeartbeatCallBack), client);
你看 我截的来自发送数据以及心跳方法内的东西 都一样的. 所以 你这感觉没什么用
异步就是一个动作是异步的,跟“发送还是接收”没有直接关系。你原来是什么流程,异步操作之后仍让还是什么流程。例如你原来是发送消息之后接收消息,那么改为BeginSend之后你在EndSend时开始BeginReceive,也就仍然是先发后收。而如果你原来是并行地进行Receive和Send,那么改为异步之后也还是一样。异步本来就是封装好的子线程操作,用不着你再多写任何代码。如果你觉得自己写的子线程发送心跳的代码比.net的异步操作更简单更好,那么就用你自己的好了。
异步就是一个动作是异步的,跟“发送还是接收”没有直接关系。你原来是什么流程,异步操作之后仍让还是什么流程。例如你原来是发送消息之后接收消息,那么改为BeginSend之后你在EndSend时开始BeginReceive,也就仍然是先发后收。而如果你原来是并行地进行Receive和Send,那么改为异步之后也还是一样。异步本来就是封装好的子线程操作,用不着你再多写任何代码。如果你觉得自己写的子线程发送心跳的代码比.net的异步操作更简单更好,那么就用你自己的好了。也就是说socket异步操作的话,不存在端口被谁谁占用的情况哇?能同时的进行Receive和Send?我就想要这效果,3Q
public void Heartbeat(byte[] bytes)
{
client.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, new AsyncCallback(BeginHeartbeatCallBack), client);
}
private void BeginHeartbeatCallBack(IAsyncResult ar)
{
Socket tCleint = ar as Socket;
tCleint.EndSend(ar);
}
#endregion