异步SOCKET的两种方法的有关问题
异步SOCKET的两种方法的问题
用多线程进行异步SOCKET挺好理解,就是
1.创建监听
2.Thread _acceptWorkThread = new Thread(AcceptWorkThread);
3.处理回调函数AcceptWorkThread以及回调函数内的回调函数
子线程+回调函数 完成异步SOCKET功能
用异步编程的方法很难理解:
1.先要设置 ManualResetEvent
然后创建监听并调用监听的回调函数
我想问的是这种方法是不是没有创建子线程?如果没创建子线程那allDone.Reset();allDone.WaitOne();的各种操作控制的是什么线程?
------最佳解决方案--------------------
listener.BeginAccept( 59 new AsyncCallback(AcceptCallback), 60 listener);
用多线程进行异步SOCKET挺好理解,就是
1.创建监听
2.Thread _acceptWorkThread = new Thread(AcceptWorkThread);
3.处理回调函数AcceptWorkThread以及回调函数内的回调函数
子线程+回调函数 完成异步SOCKET功能
用异步编程的方法很难理解:
1.先要设置 ManualResetEvent
public static ManualResetEvent allDone = new ManualResetEvent(false);
然后创建监听并调用监听的回调函数
Socket listener = new Socket(AddressFamily.InterNetwork,
44 SocketType.Stream, ProtocolType.Tcp);
45
46 // Bind the socket to the local endpoint and listen for incoming connections.
47 try
48 {
49 listener.Bind(localEndPoint);
50 listener.Listen(100);
51 while (true)
52 {
53 // Set the event to nonsignaled state.
54 allDone.Reset();
55
56 // Start an asynchronous socket to listen for connections.
57 Console.WriteLine("Waiting for a connection");
58 listener.BeginAccept(
59 new AsyncCallback(AcceptCallback),
60 listener);
61
62 // Wait until a connection is made before continuing.
63 allDone.WaitOne();
64 }
65 }
66 catch (Exception e)
67 {
68 Console.WriteLine(e.ToString());
69 }
我想问的是这种方法是不是没有创建子线程?如果没创建子线程那allDone.Reset();allDone.WaitOne();的各种操作控制的是什么线程?
------最佳解决方案--------------------
listener.BeginAccept( 59 new AsyncCallback(AcceptCallback), 60 listener);