Tôi đã chụp luồng video bằng thiết bị Kinect. Tôi cần Gửi luồng này qua mạng. Vì mục đích này, tôi đã sử dụng ổ cắm. cô là đoạn mã trong máy chủ và máy khách:Gửi khung hình video qua ổ cắm
private System.Drawing.Bitmap _CurrentBitmap;
public ManWindow()
{
InitializeComponent();
this.Loaded += delegate
{
BackgroundWorker bw1 = new BackgroundWorker();
bw1.RunWorkerCompleted += (a, b) => bw1.RunWorkerAsync();
bw1.DoWork += delegate { SendImage(); };
bw1.RunWorkerAsync();
};
}
public void SendImage()
{
Socket sListen = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
IPAddress IP = IPAddress.Parse("127.0.0.1");
IPEndPoint IPE = new IPEndPoint(IP, 4321);
sListen.Bind(IPE);
sListen.Listen(2);
while (true)
{
Socket clientSocket;
clientSocket = sListen.Accept();
var converter = new System.Drawing.ImageConverter();
byte[] buffer = (byte[])converter.ConvertTo(_CurrentBitmap, typeof(byte[]));
clientSocket.Send(buffer, buffer.Length, SocketFlags.None);
}
}
Chủ đầu tư:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
BackgroundWorker bw11111 = new BackgroundWorker();
bw11111.RunWorkerCompleted += (a, b) => bw11111.RunWorkerAsync();
bw11111.DoWork += delegate { Recive(); };
bw11111.RunWorkerAsync();
Recive();
}
public void Recive()
{
Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
IPAddress IP = IPAddress.Parse("127.0.0.1");
IPEndPoint IPE = new IPEndPoint(IP, 4321);
s.Connect(IPE);
while (true)
{
byte[] buffer = new byte[1000000];
s.Receive(buffer, buffer.Length, SocketFlags.None);
MemoryStream ms = new MemoryStream(buffer);
ms.Write(buffer, 0, buffer.Length);
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(ms);
Dispatcher.BeginInvoke(new Action(() =>
{
rgbImage11.Source = bitmap.ToBitmapSource();
}));
}
}
_CurrentBitmap là khung readed từ Kinect và mỗi 1 giây cập nhật. Khi Client khởi động, hãy gọi phương thức Socket Receive, nó nhận frame và sau khi chuyển đổi sang bitmap asign nó thành Image WPF control. Vấn đề của tôi là hành động này xảy ra và vòng lặp trong máy khách không lặp lại.
Chỉ cần đoán, nhưng một khi bạn gửi hình ảnh trong máy chủ, Ổ cắm của bạn nằm ngoài phạm vi để tôi tưởng tượng khách hàng mất kết nối và chết. – Chris
Không có bất kỳ lỗi nào xảy ra, tại sao lại nhận được phương thức gọi là một lần? Có cách nào khác để gửi video không? –