Ошибка при отправке данных - PullRequest
0 голосов
/ 05 марта 2012

Я разрабатываю этот код для отправки данных, координат x & y на экране WP7 на сервер ПК, но он не работает, но отладчик работает нормально, и я уверен, что мой код верен. нет ошибок, показывающих этот код для клиентской стороны WP7

TransformGroup transformG;
    TranslateTransform translation;
    double DeltaX, DeltaY;

    private Socket client_socket;
    private delegate void mydelegate(byte[] buffer);
    private delegate void ShowMessagedelegate(string MSG);
    // Constructor
    public MainPage()
    {
        InitializeComponent();


        this.ManipulationDelta += new EventHandler<ManipulationDeltaEventArgs>(MainPage_ManipulationDelta);
        transformG = new TransformGroup();
        translation = new TranslateTransform();
        transformG.Children.Add(translation);
    }
    void MainPage_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
    {

        DeltaX = e.DeltaManipulation.Translation.X;
        DeltaY = e.DeltaManipulation.Translation.Y;

    }
    void StartSending()
    {
            try
            {
                SocketAsyncEventArgs socketEventArgs = new SocketAsyncEventArgs();
                byte[] buffer = Encoding.UTF8.GetBytes(DeltaX.ToString()+"/"+DeltaY.ToString());
                socketEventArgs.SetBuffer(buffer, 0, buffer.Length);
                client_socket.SendToAsync(socketEventArgs);
            }
            catch (Exception) { }
    }


    void Conncet(string IP_Address)
    {

        client_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs()
        {
            RemoteEndPoint = new IPEndPoint(IPAddress.Parse(IP_Address), 4532)
        };
        socketEventArg.Completed += OnConncetCompleted;
        client_socket.ConnectAsync(socketEventArg);
    }





    private void ConnectBTN_Click(object sender, RoutedEventArgs e)
    {
        Conncet(IPAddress_TXT.Text);
        Thread th = new Thread(new ThreadStart(StartSending));
    }

и этот код для серверной стороны

[DllImport("user32.dll")]
    static extern bool GetCursorPos(ref Point lpPoint);
public Int32 pX, pY;
Socket SenderSocket;
void StartReceiving()
    {
        byte[] response = new byte[10000];
        SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
        socketEventArg.Completed += OnReceiveCompleted;
        socketEventArg.SetBuffer(response, 0, response.Length);
        SenderSocket.ReceiveAsync(socketEventArg);
    }

    void OnReceiveCompleted(object sender, SocketAsyncEventArgs e)
    {
        //this.Dispatcher.BeginInvoke(new mydelegate(ModifCursorPos), e.Buffer);
        this.BeginInvoke(new mydelegate(ModifCursorPos), e.Buffer);
    }
    private void ModifCursorPos(byte[] buffer)
    {
        try
        {
            MemoryStream ms = new MemoryStream(buffer);
            string chaine = Encoding.UTF8.GetString(buffer);
            string[] pos = chaine.Split('/');

                pX = Convert.ToInt32(pos[0]);
                pY = Convert.ToInt32(pos[1]);
                //posX.Text = pX.ToString();
                //posY.Text = pY.ToString();

            ms.Close();

            this.Cursor = new Cursor(Cursor.Current.Handle);
            Cursor.Position = new Point(Cursor.Position.X + pX, Cursor.Position.Y + pY);
            posX.Text = Cursor.Position.X.ToString();//try to get X in textbox
            posY.Text = Cursor.Position.Y.ToString();//try to get Y in textbox
        }
        catch (Exception) { }
        finally
        {
            StartReceiving();
        }
    }

Я не знаю, почему он не отправляет данные или, возможно, не получает их Пожалуйста, помогите и спасибо

1 Ответ

0 голосов
/ 05 марта 2012
        try
        {
            SocketAsyncEventArgs socketEventArgs = new SocketAsyncEventArgs();
            byte[] buffer = Encoding.UTF8.GetBytes(DeltaX.ToString()+"/"+DeltaY.ToString());
            socketEventArgs.SetBuffer(buffer, 0, buffer.Length);
            client_socket.SendToAsync(socketEventArgs);
        }
        catch (Exception) { }

это будет скрывать ваше исключение, если оно у вас есть, поэтому попробуйте изменить его на

        try
        {
            SocketAsyncEventArgs socketEventArgs = new SocketAsyncEventArgs();
            byte[] buffer = Encoding.UTF8.GetBytes(DeltaX.ToString()+"/"+DeltaY.ToString());
            socketEventArgs.SetBuffer(buffer, 0, buffer.Length);
            client_socket.SendToAsync(socketEventArgs);
        }
        catch (Exception e) { Console.Write(e.Tostring()); }

Это поможет выяснить, что является причиной проблемы, а затем, если вы получите исключение, опубликуйте егоздесь, и мы можем помочь вам больше

также то же самое для этой одной попытки {MemoryStream ms = new MemoryStream (buffer);string chaine = Encoding.UTF8.GetString (buffer);string [] pos = chaine.Split ('/');

            pX = Convert.ToInt32(pos[0]);
            pY = Convert.ToInt32(pos[1]);
            //posX.Text = pX.ToString();
            //posY.Text = pY.ToString();

        ms.Close();

        this.Cursor = new Cursor(Cursor.Current.Handle);
        Cursor.Position = new Point(Cursor.Position.X + pX, Cursor.Position.Y + pY);
        posX.Text = Cursor.Position.X.ToString();//try to get X in textbox
        posY.Text = Cursor.Position.Y.ToString();//try to get Y in textbox
    }
    catch (Exception) { }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...