C#中的套接字编程处理多个客户端异常

时间:2014-01-04 06:45:49

标签: c# sockets

您好我正在尝试编写一个可以同时处理多个客户端的服务器应用程序,以下是我的代码:

static IPAddress ad = IPAddress.Parse("10.78.138.41");
static TcpListener list = new TcpListener(ad, 56667);
static void Main(string[] args)
{
    Socket s;
    list.Start();
    Console.WriteLine("Waiting For Connection...");
    list.BeginAcceptSocket(new AsyncCallback(Callback), null);
    Console.ReadLine();
}

static Socket s ;
static List<Socket> clientlist = new List<Socket>();
static byte[] localbuffer;

private static void Callback(IAsyncResult ar)
{
        s = list.EndAcceptSocket(ar);
        Console.WriteLine("Connected To Client..");
        localbuffer =new byte[1024];
        s.BeginReceive(localbuffer,0,localbuffer.Length,SocketFlags.None,new AsyncCallback(CallBackRead),s);
        clientlist.Add(s);

             Console.WriteLine(s.RemoteEndPoint);
        list.BeginAcceptSocket(new AsyncCallback(Callback), null);
}

public static void CallBackRead(IAsyncResult res )
{
   Socket ss = (Socket)res.AsyncState;
   int recieved =  s.EndReceive(res);
   byte[] mybuffer =new byte[recieved];
   for (int i = 0; i < recieved; i++)
   {
       mybuffer[i] = localbuffer[i];
   }

   Console.WriteLine(System.Text.ASCIIEncoding.ASCII.GetString(mybuffer));
   s.BeginReceive(localbuffer, 0, localbuffer.Length, SocketFlags.None, new AsyncCallback (CallBackRead), s);

}

但是当我尝试从不同的客户端发送时,我在EndRecieve Statement的CallBackRead方法中得到了这个异常,以下是例外:

The IAsyncResult object was not returned from the corresponding asynchronous method on this class.

0 个答案:

没有答案