none
Socket.Begin/End RRS feed

  • Вопрос

  • Появилась одна проблемка, которая, собственно не дает продолжать писать...

    В общем, пишу небольшой чатик со встроенным сервером. При коннекте клиента сервер перехватывает входящее подключение, но подключившийся сокет почему-то остается не подключенным

     

    // Обработка подключения

     

            private void Acception()

            {

                mysock.s.BeginAccept(new AsyncCallback(ConnectionCatched), mysock.s);

            }

     

            void ConnectionCatched( IAsyncResult Result)

            {

                int Nmbr = ClientsNumber;

                ClientsNumber++;

                Clients[Nmbr] = new SocketInfo();

                Clients[Nmbr].s = (Socket)Result.AsyncState;

     

                mysock.s.EndAccept(Result);

                Acception();

     

                IPEndPoint ClEndpoint = (IPEndPoint)Clients[Nmbr].s.LocalEndPoint;

                Clients[Nmbr].IP=ClEndpoint.Address.ToString();

                Clients[Nmbr].Port=ClEndpoint.Port;

                Clients[Nmbr].Name="Client"+Convert.ToString(Nmbr);

                Send(Clients[Nmbr].s, "n/" + mysock.Name + "/");

            }

            private void Send(Socket Dist, String Buff)

            {

                Byte[] SendBytes = Encoding.ASCII.GetBytes(Buff);

                SocketError SendResult;

                Dist.BeginSend(SendBytes, 0, Buff.Length, SocketFlags.None, out SendResult, new AsyncCallback(SendingEnd), Dist);

                if (SendResult != SocketError.Success) //SendResult==SocketError.NotConnected

                {

     

                }   

     

            }

     

     

    //подключение

     

     

     private void Connect()

            {

                Clients = new SocketInfo[255];

                SocketInfo a = new SocketInfo();

                a.Set(mysock.IP, mysock.Port, "Server");

                Clients.SetValue(a, 0);

                ClientsNumber = 1;

                ImServ = false;

     

     

     

                IPAddress ipaddress = IPAddress.Parse(mysock.IP);

                IPEndPoint ipendpoint = new IPEndPoint(ipaddress, mysock.Port);

                IPEndPoint myipendpoint = new IPEndPoint(ipaddress, 27015);

     

                mysock.s = new Socket(myipendpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

                Clients[0].s = new Socket(ipendpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

     

                mysock.s.BeginConnect(ipendpoint, new AsyncCallback(ConnectedEnd), mysock.s);

     

                Recive(mysock.s);

     

                Connected = true;

                ServerBox.Enabled = false;

                ConnectedButton.Text = "Connected";

     

            }

            void ConnectedEnd(IAsyncResult Result)

            {

                mysock.s.EndConnect(Result);

            }

     

            private void Recive(Socket Sender)

            {

                Byte[] RecvBytes = new Byte[255];

                SocketError Err;

                Sender.BeginReceive(RecvBytes, 0, 255, SocketFlags.None, out Err, new AsyncCallback(RecvCatch), Sender);

                if (Err != SocketError.Success)

                {

     

                }

            }

     

     

    все перепробовал... не знаю, что поделать((

    • Перемещено Siddharth Chavan 1 октября 2010 г. 21:27 MSDN Forums Consolidation (От:Visual C#)

Ответы

Все ответы