Socket client;
...
client.BeginSend(byteData, 0, byteData.Length, SocketFlags.None,
new AsyncCallback(SendCallback), client);关于BeginSend的最后一个参数:提示,
一个对象,它包含此请求的状态信息,可以是用户自定义对象那么,是不是指,我除了把byteData发送给对方外,还会把最后一个参数也传送给对方?
对方用BeginReceive时除了接收到byteData外,还会接收到BeginSend的最后一个参数.如果
client.BeginSend(byteData, 0, byteData.Length, SocketFlags.None,
new AsyncCallback(SendCallback), client);
的最后一个参数不是socket,而是一个自定义的类对象,那么,在发送后,对方是否是同样的会收到,然后就可以进行强行转换,
为自定义的类对象接着把他解释(即可以直接用).新手一个,谢谢指点.
...
client.BeginSend(byteData, 0, byteData.Length, SocketFlags.None,
new AsyncCallback(SendCallback), client);关于BeginSend的最后一个参数:提示,
一个对象,它包含此请求的状态信息,可以是用户自定义对象那么,是不是指,我除了把byteData发送给对方外,还会把最后一个参数也传送给对方?
对方用BeginReceive时除了接收到byteData外,还会接收到BeginSend的最后一个参数.如果
client.BeginSend(byteData, 0, byteData.Length, SocketFlags.None,
new AsyncCallback(SendCallback), client);
的最后一个参数不是socket,而是一个自定义的类对象,那么,在发送后,对方是否是同样的会收到,然后就可以进行强行转换,
为自定义的类对象接着把他解释(即可以直接用).新手一个,谢谢指点.
在回调函数中,可以通过IAsyncResult.AsyncState来获取这个传过来的值,一般都会在发送时把发送的Socket对象传过来,然后在回调中调用EndSend方法。
具体的可以参考MSDN中异步套接字编程的示例。
http://blog.csdn.net/zhiang75/archive/2004/08/16/75915.aspx#273727
这里[c#中异步基于消息通信的完成端口的TCP/IP协议的组件实现(源代码) ]这里的[完成端口]的思想究竟体现在哪里?
我怎么看来看去就是一个socket 异步通讯的例子.~