经常发送对象时使用套接字时出错

时间:2014-02-20 19:03:55

标签: c# winforms sockets remote-desktop

我正在编写一个可以管理网络环境中的计算机的程序。

我尝试成为此程序的一部分,将分配远程客户端(远程桌面)的控件。但是我的目标就像团队观察者而不是RDC(RDP)。

我想提供服务并将其放入客户端,每次运行该服务(自动,自动启动)

我使用从服务器发送鼠标和键盘到客户端,客户端桌面的屏幕截图将转移到服务器,目标计算机必须控制。

我是由BackgroundWorker在循环中编写的(在Complete_BW中我把BW.RunWorkerAsync())

我使用套接字,当我运行程序时,我的服务器上升错误1或2次后发送桌面映像到服务器,错误是在Socket.EndPoint ...

代码在这里:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.IO;


namespace remServer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            bw.RunWorkerAsync();

        }
        public Image GetImage(byte[] byteArrayIn)
        {
            Image ret = null;
            try
            {
                MemoryStream ms = new MemoryStream(byteArrayIn);
                ret = Image.FromStream(ms);
            }
            catch { }
            return ret;
        }
        private void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            FTServerCode f = new FTServerCode();
            Byte[] getCap = f.StartServer();
            img.Image = GetImage(getCap);

        }

        private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            bw.RunWorkerAsync();
        }
    }
    public  class FTServerCode
    {
        IPEndPoint ipEnd;
        Socket sock;
        public FTServerCode()
        {
            try
            {

                ipEnd = new IPEndPoint(IPAddress.Any, 5656); // Error In this Line
                sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
                sock.Bind(ipEnd);
            }
            catch { }
        }
        public Byte[] StartServer()
        {
            byte[] clientData = new byte[1024 * 5000];
            try
            {
                sock.Listen(100);

                Socket clientSock = sock.Accept();



                int receivedBytesLen = clientSock.Receive(clientData);

                clientSock.Close();

            }

            catch (Exception ex)
            {
                MessageBox.Show("File Receving error." + ex.Message);
            }
            return clientData;
        }
    }
}

如果客户端代码是必要的,请告诉我放在这里。 tnx

0 个答案:

没有答案