zoukankan      html  css  js  c++  java
  • <C#>最简单的NetMeeting

          怎样制造小画家软件了,怎样实现小画家在互联电脑间显示update了?其实,应用的方法很简单。我们可用Form中的一些事件来浅浅介绍一下:在客户端用上Form中的MouseDown和MouseUp两个事件做出小画家来,通过UDP协议将小画家中信息即时发送去服务端。客户端的代码如下:

    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.Sockets;
    
    namespace Client3
    {
        public partial class Form1 : Form
        {
            int startX, startY,stopX,stopY;
            Graphics g;
    
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050);
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                if (Enabled == false)
                    s.Close();
            }
    
            private void Form1_MouseDown(object sender, MouseEventArgs e)
            {
                startX = e.X;
                startY = e.Y;
    
                byte[] mybyte1 = Encoding.Default.GetBytes(Convert.ToString(startX));
                byte[] mybyte2 = Encoding.Default.GetBytes(Convert.ToString(startY));
                s.SendTo(mybyte1, ipep);
                s.SendTo(mybyte2, ipep);
    
            }
    
            private void Form1_MouseUp(object sender, MouseEventArgs e)
            {
                g = this.CreateGraphics();
                Pen p = new Pen(Color.Red, 1);
                g.DrawLine(p, startX, startY, e.X, e.Y);
    
                stopX = e.X;
                stopY = e.Y;
    
                byte[] mybyte3 = Encoding.Default.GetBytes(Convert.ToString(stopX));
                byte[] mybyte4 = Encoding.Default.GetBytes(Convert.ToString(stopY));
                s.SendTo(mybyte3, ipep);
                s.SendTo(mybyte4, ipep);
    
    
            }
            //    s.Close();     
        }
    }

    在服务器端用Form中的Paint事件将客户端接受来的信息显示到Form中。它的代码如下:

    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.Sockets;
    
    namespace Service3
    {
        public partial class Form1 : Form
        {
            int startX, startY, stopX, stopY;
            Graphics g;
    
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                if (Enabled == false)
                    s.Close();
            }
    
            private void Form1_Paint(object sender, PaintEventArgs e)
            {
                s.Bind(ipep);
    
                while (true)
                {
                    byte[] data1 = new byte[1024];
                    IPEndPoint send1 = new IPEndPoint(IPAddress.Any, 0);
                    EndPoint Remote1 = (EndPoint)(send1);
                    int length1 = s.ReceiveFrom(data1, ref Remote1);
                    startX = Convert.ToInt32(Encoding.Default.GetString(data1, 0, length1));
    
                    byte[] data2 = new byte[1024];
                    IPEndPoint send2 = new IPEndPoint(IPAddress.Any, 0);
                    EndPoint Remote2 = (EndPoint)(send2);
                    int length2 = s.ReceiveFrom(data2, ref Remote2);
                    startY = Convert.ToInt32(Encoding.Default.GetString(data2, 0, length2));
    
                    byte[] data3 = new byte[1024];
                    IPEndPoint send3 = new IPEndPoint(IPAddress.Any, 0);
                    EndPoint Remote3 = (EndPoint)(send3);
                    int length3 = s.ReceiveFrom(data3, ref Remote3);
                    stopX = Convert.ToInt32(Encoding.Default.GetString(data3, 0, length3));
    
                    byte[] data4 = new byte[1024];
                    IPEndPoint send4 = new IPEndPoint(IPAddress.Any, 0);
                    EndPoint Remote4 = (EndPoint)(send4);
                    int length4 = s.ReceiveFrom(data4, ref Remote4);
                    stopY = Convert.ToInt32(Encoding.Default.GetString(data4, 0, length4));
    
                    g = e.Graphics;
                    Pen pen1 = new Pen(Color.Blue, 1);
                    g.DrawLine(pen1, startX, startY, stopX, stopY);
                }
                
                //s.Close();
            }
    
        }
    }
  • 相关阅读:
    使用边缘计算来改变5G世界中的网络
    解开关于人工智能的六个迷思
    哪些数据将成为区块链系统的关键数据?
    如何通过7个步骤构建机器学习模型
    人工智能的发展体现了人类社会由实向虚的趋势
    5G技术与人工智能的智能结合
    量子计算总是混合的,这需要不断协调
    7.5省队集训 tree
    bzoj2989&4170: 数列
    bzoj1010: [HNOI2008]玩具装箱toy
  • 原文地址:https://www.cnblogs.com/virgil/p/2715435.html
Copyright © 2011-2022 走看看