由于种种原因刷了两个晚上写了这个东西。必须吐槽一下WPF和WinForm的库不一样好麻烦。
BitmapImage、BitmapSource和Bitmap这三个东西弄的我好烦躁。
第一次用异步Socket。写的时候还不是很懂好在Socket部分一次成不用Debug。写完这篇再慢慢回味一下代码。
之前写Shuide的时候服务器总是在连接第二个客户端的时候死掉。当时调了好久没调出来现在来看换成异步应该就阔以了。。。写完这篇就去重写Shuide的后台了。
服务器端的代码。。感觉这次的代码没什么核心技术。就干脆全贴上来了。。。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Interop;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ScreenServer
{
public partial class MainWindow : Window
{
private Socket serverSocket;
private IPEndPoint serverIEP;
private BitmapImage imgBuffer;
private delegate void SetImageCallBack(BitmapImage bitImage);
SetImageCallBack setImageCallBack;
private delegate void SetTextblockStateCallBack(String Str);
SetTextblockStateCallBack setTextblockStateCallBack;
private int Time;
public MainWindow()
{
InitializeComponent();
setImageCallBack = new SetImageCallBack(SetImage);
setTextblockStateCallBack = new SetTextblockStateCallBack(SetTextblockState);
Time = 50;
}
private void buttonStart_Click(object sender, RoutedEventArgs e)
{
textblockState.Dispatcher.Invoke(setTextblockStateCallBack, "开始监听..