WPF(7)---Sockets数据的接收与发送

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.Net.Sockets;
using System.Net;
using System.Reflection;
using System.Threading;
using Newtonsoft.Json;
namespace Test服务端
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        public class SendJson
        {
            public string op { get; set; }
            private Dictionary<string, object> _monitor = null;
            public Dictionary<string, object> monitor
            {
                get
                {
                    if (_monitor == null)
                    {
                        _monitor = new Dictionary<string, object>();
                    }
                    return _monitor;
                }
                set
                {
                    this._monitor = value;
                }
            }
        }
        public Socket MySocket_listen;
        public IPEndPoint MyIPEndPoint;
        public Socket MySocket_server;
        public Socket MySocket_send;
        public void Listen()
        {
            MySocket_listen = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
            IPAddress IP = IPAddress.Parse("192.168.253.3");
            MyIPEndPoint = new IPEndPoint(IP,8888);
            MySocket_listen.Bind(MyIPEndPoint);
            MySocket_listen.Listen(10);
            MySocket_listen.BeginAccept(new AsyncCallback(OnResquest), MySocket_listen);
        }
        public void OnResquest(IAsyncResult ar)
        {
            MySocket_server = (Socket)ar.AsyncState;
            MySocket_send = MySocket_server.EndAccept(ar);
            byte[] MyByte=new byte[1024];
            string MyData = "{\"op\":\"UpdateDeviceStatus\",\"monitor\":{\"Fire\":\"false\",\"Smoke\":\"false\"}}";
            MyByte = Encoding.UTF8.GetBytes(MyData);
            MySocket_send.Send(MyByte,MyByte.Length,0);
            MySocket_server.BeginAccept(new AsyncCallback(OnResquest),MySocket_server);
            while(true)
            {
                byte[] Mybyte=new byte[1024];
                int Mylength = MySocket_send.Receive(Mybyte);
                string MyGetdata = Encoding.UTF8.GetString(Mybyte,0,Mylength);
                MessageBox.Show("客户端发来数据:"+MyGetdata);
            }
        }

        private void btnSend_Click(object sender, RoutedEventArgs e)
        {
            SendJson MySendJson = new SendJson();
            MySendJson.op = "UpdateDeviceStatus";
            MySendJson.monitor.Add("Fire", "false");
            MySendJson.monitor.Add("Smoke", "false");
            byte[] MyByte = new byte[1024];
            //string MyData = txtData.Text.ToString();
            string MyData = JsonConvert.SerializeObject(MySendJson);
            MyByte = Encoding.UTF8.GetBytes(MyData);
            MySocket_send.Send(MyByte, MyByte.Length, 0);
        }
        private void btnOpen_Click(object sender, RoutedEventArgs e)
        {
            ThreadStart MyThreadStart = new ThreadStart(Listen);
            Thread MyThread = new Thread(MyThreadStart);
            if (btnOpen.Content.ToString() == "开始服务")
            {
                MyThread.Start();
                btnOpen.Content = "停止服务";
            }
            else
            {
                MyThread.Interrupt();
                MyThread.Abort();
                btnOpen.Content = "开始服务";
            }
        }
    }
}

 

posted @ 2015-07-02 05:44  Probably  阅读(637)  评论(0编辑  收藏  举报