发送数据时出错

本文关键字:出错 数据 | 更新日期: 2023-09-27 18:27:00

我开发了这段代码来发送数据,x&y在WP7屏幕中坐标到PC服务器,但它不工作,但调试器工作正常,我相信我的代码是正确的。显示时没有错误此代码用于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();
        }
    }

我不知道它为什么不发送数据,或者可能没有收到数据plz帮助感谢

发送数据时出错

        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=新的MemoryStream(缓冲区);string chaine=编码.UTF8.GetString(缓冲区);string[]pos=链。拆分('/');

            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) { }