Я создаю программу, аналогичную Microsoft Netmeeting, для которой мне нужно отправлять данные нескольких типов из одного подключения, например, положение мыши, нажатую клавишу и снимать экранный снимок за раз.Я успешно отправляю и получаю снимок экрана для клиента, но не могу понять, как несколько данных могут быть отправлены через одно соединение.
Я думаю, что для этой цели требуется несколько портов.Один для снимка экрана, один для мыши и один для нажатой клавиши.
Ниже приведены коды, которые я использую: Сервер = Отправитель ScreenShot, Получатель MousePos и Ключ.Клиент = Получатель ScreenShot, Отправитель MousePos и Ключ.
Сервер:
void StartListen()
{
try
{
IPEndPoint ipendp = new IPEndPoint(IPAddress.Parse(OwnIP()), 532);
tcpl = new TcpListener(ipendp);
tcpl.Start();
s1 = tcpl.AcceptSocket();
ns = new NetworkStream(s1);
timer1.Enabled = true;
while (true)
{
byte[] buffer = imageToByteArray(CaptureScreenShot());
s1.Send(buffer, buffer.Length, SocketFlags.None);
Thread.Sleep(250);
}
}
catch
{
tcpl.Stop();
ns.Close();
//tcpl.EndAcceptSocket();
Form1_Load(0,EventArgs.Empty);
}
}
Клиент:
void StartClient()
{
try
{
IPEndPoint ipendp = new IPEndPoint(IPAddress.Parse(toolStripTextBox1.Text), 532);
this.Text = "SWare Application - " + toolStripTextBox1.Text + ":532";
tcpc = new TcpClient();
tcpc.Connect(ipendp);
Socket s1 = tcpc.Client;
ns = tcpc.GetStream();
while (true)
{
byte[] b = new byte[500000];
s1.Receive(b);
MemoryStream ms = new MemoryStream(b);
pictureBox1.Image = Image.FromStream(ms);
//Thread.Sleep(250);
}
}
catch
{
tcpc.Close();
MessageBox.Show("Disconnected from the Remote PC");
}
}