当有一个更早的异步调用正在进行时,不能阻止调用此套接字

拔剑自然神 2013-09-29 02:22:11
SocketClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
SocketClient.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), SocketClient);
…………
SocketClient 为一个异步连接的Socket会话如上
下面的是一个开启线程的发送心脏包数据
SocketClient.Send(ComTools.Clear(@"08\00\40\00\00\00\12\01"));
将文本的字符转换为16进制的发送出去。
public static byte[] Clear(string clear)
{
string[] strVal = clear.Split('\\');
byte[] sendByte = new byte[strVal.Length];
for (int i = 0; i < strVal.Length; i++)
{
try
{
sendByte[i] = (byte)Convert.ToInt16(strVal[i], 16);
}
catch (Exception e)
{
throw (e);
}
}
return sendByte;
}

出现下面的错误,
当有一个更早的异步调用正在进行时,不能阻止调用此套接字
是不是需要用委托来处理SocketClient的Send方法还是转换为16进制的数据?
委托具体怎么用,大神们,指点迷津,非常感谢。
...全文
1461 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
拔剑自然神 2013-09-30
  • 打赏
  • 举报
回复
这时候发帖,真是不应该呀,大神忙着思考放假的事。
拔剑自然神 2013-09-30
  • 打赏
  • 举报
回复
套接字异步挂起的时候,在异步等待挂起,结束挂起。
拔剑自然神 2013-09-30
  • 打赏
  • 举报
回复
上面的问题就是Socket挂起异步连接的问题,此问题中SOCKET就是原来是异步挂起等待客户端发送信息的,当一个异步在挂起的时候不能进行这样的操作吗? 我表示费解。 按理说应该可以用委托的方式,要么将socketClient强制转换为一个新的socket,这样一来,也可以使用这种方法。来避免异步挂起的问题,还有结束挂起应该也是可行的。

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧