socketAsync的UserToken是否能用于在连接时传递参数? 如题,如果不能的话,有什么方法能用于在socket建立连接时传递参数,望赐教,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.usertoken.aspx应用程序可使用此属性来将应用程序状态对象与 SocketAsyncEventArgs 对象关联。此属性本质上是一种可供应用程序用来向应用程序的事件处理程序(例如,异步操作完成方法)传递状态的途径。 此属性可用于所有异步套接字 (xxxAsync) 方法。 人家那个是专门用于传用户信息的,不要乱用人家的东西。如果你觉得SocketAsyncEventArgs不够用,完全可以自己创建一个class,从它继承,并设置你自己的属性。然后,在编程中 new 出来你自己的这个class实例,就可以为其设置自定义值了。在对应的事件处理方法的第二个参数的声明上,可以直接用你自定义的这个class,而不是SocketAsyncEventArgs。 要注意,我告诉你的方法,是强类型的,你自定义的每一个属性都有明确的含义,成文自明。所以不要使用UserToken,因为你也用它,别人也用它,它很快就成了破抹布了,而且会造成冲突。 UserToken本来就是用来传递用户信息的,所以任何信息都是可以加载的。不过我这里还不清楚你打算传递些什么参数。 其实UserToken可以用来承载一个委托或者包含一个委托的类,用于指定本次传输结束后下次需要执行的操作,这比起使用等待信号要安全的多,不会出现死锁的情况。 具体地说,以msdn上的例子来说:http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.aspx你可以在Init()方法的这一行readWriteEventArg = new SocketAsyncEventArgs();改为new出自己的参数对象readWriteEventArg = new MySocketAsyncEventArgs();readWriteEventArg.SayWhat="我自己定义的";然后把void IO_Completed(object sender, SocketAsyncEventArgs e)改为void IO_Completed(object sender, MySocketAsyncEventArgs e)这就可以从参数e来获取传进来的SayWhat属性值了。你还可以定义属性用于传出值。 嗯,前面一行变量类型声明SocketAsyncEventArgs readWriteEventArg;也要改为MySocketAsyncEventArgs readWriteEventArg; 你那种方法和自定义一个类传给UserToken属性一样的啊。 谢谢以上朋友的赐教,有点不明作为客服端在向服务器连接的时候,如何传递自定义的东西,比如6楼所说的SayWhat,是在连接的时候,我的意思是Connect的时候,因为如果继承SocketAsyncEventArgs的话,在连接后客服端需要进行一次数据发送,到服务端要进行一次遍历才能定位Socket的用户信息,不知有什么比较好的方法,谢谢! 你在SayWhat类中可以定义一些属性,像name,id,之类可以标识身份的.然后在服务器上建立一个表,如果服务器接到一个客户端的连接请求,在连接成功后,就将SayWhat类中标识身份的属性存到表中,如果发现客户端断开连接了就将该客户的信息从表中删除.这样就可以根据客户端每次发来的信息到表中识别身份,作不同的回应. 请教高手,我自定义一个类,继承SocketAsyncEventArgs类,加了几个属性,可是运行后收不到任何信息,不知道怎么回事,请高手 指点迷津~ vitual 修饰变量是什么意思啊? 自动打开网页 怎样开启SqlServer远程登录??? 格式化问题 解决马上给分 关于C#高速处理的问题 三维图像标记 百分求助:莫名httpwebrequest超时问题,已经有好几个人问了同样问题,但没见到解决方法 关于排序算法稳定性的疑惑 字模设计(100分)顶者有分 在C#中如何实现打开某个html文件然后自动开启IE? 分都给了!急求dataGridView动态添加数据的问题! 服务器端安装 VSS 2005时报错.The server configuration settings apply only for local datab
http://msdn.microsoft.com/zh-cn/library/system.net.sockets.socketasynceventargs.aspx你可以在Init()方法的这一行readWriteEventArg = new SocketAsyncEventArgs();
改为new出自己的参数对象readWriteEventArg = new MySocketAsyncEventArgs();
readWriteEventArg.SayWhat="我自己定义的";
然后把void IO_Completed(object sender, SocketAsyncEventArgs e)
改为void IO_Completed(object sender, MySocketAsyncEventArgs e)这就可以从参数e来获取传进来的SayWhat属性值了。你还可以定义属性用于传出值。
也要改为MySocketAsyncEventArgs readWriteEventArg;
作为客服端在向服务器连接的时候,如何传递自定义的东西,比如6楼所说的SayWhat,是在连接的时候,我的意思是Connect的时候,因为如果继承SocketAsyncEventArgs的话,在连接后客服端需要进行一次数据发送,到服务端要进行一次遍历才能定位Socket的用户信息,不知有什么比较好的方法,谢谢!
请教高手,我自定义一个类,继承SocketAsyncEventArgs类,加了几个属性,可是运行后收不到任何信息,不知道怎么回事,请高手 指点迷津~