TCP
- 添加引用:
添加一个socket引用:
using DMSkin.Socket;
声明一个服务端:
- 添加事件
3、用调试工具充当客户端发送数据:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DMSkin.Socket;
namespace TCP_test
{
public partial class Form1 : Form
{
DMTcpServer m_DMTcpServer = new DMTcpServer();
public Form1()
{
InitializeComponent();
m_DMTcpServer.ServerIp = "0.0.0.0";
m_DMTcpServer.ServerPort = 9600;
m_DMTcpServer.OnReceviceByte += M_DMTcpServer_OnReceviceByte;
}
string str;
private void M_DMTcpServer_OnReceviceByte(Socket temp, byte[] dataBytes)
{
string msg = System.Text.Encoding.Default.GetString(dataBytes);
if (msg == "w300")
{
str = msg;
//Run(textBox1,str);
msg = "01";
IPAddress ip = ((IPEndPoint)temp.RemoteEndPoint).Address;
int port = ((IPEndPoint)temp.RemoteEndPoint).Port;
m_DMTcpServer.SendData(ip.ToString(), port, $"{msg}");
}
else
{
str = msg;
//Run(textBox2, str);
msg = "3";
IPAddress ip = ((IPEndPoint)temp.RemoteEndPoint).Address;
int port = ((IPEndPoint)temp.RemoteEndPoint).Port;
m_DMTcpServer.SendData(ip.ToString(), port, $"{msg}");
}
}
private void button1_Click(object sender, EventArgs e)
{
m_DMTcpServer.Start();
MessageBox.Show("succeed");
}
private void button2_Click(object sender, EventArgs e)
{
m_DMTcpServer.Stop();
}
void Run(TextBox textbox, string str)
{
textbox.Text = str;
}
}
}
3、显示图像
4、添加一个按钮和按钮事件,点击按钮启动服务端
设置多线程同步:
在初始化时进行阻塞和等待:
对客户端发送的数据进行判断:
5、创建一个按钮和按钮事件,进行画圆:
6、对图像进行一个二值化
新建一个myregion
新建一个线程,得到区域的面积发送给客户端:
服务端发送结果给客户端:
将画的区域进行序列化保存下来:
每次画完区域都把区域序列化:
避免mydata为空的情况: