IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP服务器 -> 正文阅读

[网络协议]TCP服务器

TCP服务器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using _0709_综合项目.FormAll;
using HalconDotNet;

namespace _0709_综合项目
{
    public class tcpServer
    {
        #region 通讯
        Socket _Seriver;
        public static Socket ClientSocket;
        Thread rec;
        Thread th;
        public static bool isSend;
        public static string strSend;
        bool isOpen = false;
        byte[] buffer = new byte[1024 * 1024];
        /// 启动服务
        public void StarSer(string tb_IP,string tb_Port)
        {
            if (!isOpen)
            {
                IPAddress IP = IPAddress.Parse(tb_IP);
                //1.初始化套接字
                _Seriver = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                //2.绑定IP和端口号
                _Seriver.Bind(new IPEndPoint(IP, int.Parse(tb_Port)));
                //3.监听
                _Seriver.Listen(10);
                //4.开启线程监听
                th = new Thread(new ThreadStart(ListenThread));
                th.IsBackground = true;
                th.Start();
                isOpen = true;
            }
            else//关闭服务
            {
                if (_Seriver != null)
                {
                    _Seriver.Close();
                }
                if (ClientSocket != null)
                {
                    ClientSocket.Close();
                }
                isOpen = false;
            }
        }
        // 监听线程 子线程入口
        public void ListenThread()
        {
            try
            {
                while (true)
                {
                    //5.等待客户请求 (没请求 阻塞)  第二个套接字
                    ClientSocket = _Seriver.Accept();//阻塞
                    isSend = true;
                    strSend = "连接成功!";
                    //Invoke(new MethodInvoker(() => {
                    //    lb_Rec.Items.Add("连接成功!");
                    //}));
                    //6.开启接收线程
                    rec = new Thread(new ParameterizedThreadStart(RecDataThread));
                    rec.IsBackground = true;
                    rec.Start(ClientSocket);
                }
            }
            catch (Exception) { }
        }
        //接收数据线程
        public void RecDataThread(object obj)
        {
            try
            {
                Socket _socketClient = (Socket)obj;
                while (true)
                {
                    //7.接收数据
                    int counts = _socketClient.Receive(buffer);
                    if (counts > 0)
                    {
                        string str = Encoding.Default.GetString(buffer, 0, counts);
                        //显示(字符串)
                        //Invoke(new MethodInvoker(() =>
                        //{
                        //    lb_Rec.Items.Add(string.Format("{0}:{1}", _socketClient, str));
                        //}));
                        isSend = true;
                        strSend = str;
                        if (str.Substring(0, 2) == "OK")
                        {
                            Position.MRE.Set();
                            Fit.MRE1.Set();
                            Fit.MRE2.Set();
                            Fit.MRE3.Set();
                            MoveCam.MREMove.Set();
                            Calibration.MREcalib.Set();
                            Correction.MREDown.Set();
                        }
                    }
                }
            }
            catch (Exception) { }
        }
        //发送字符串 不加校验
        public void sendData(string str )
        {
                byte[] buffer = Encoding.Default.GetBytes(str);
                ClientSocket.Send(buffer);
        }
        #endregion
    }
}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-25 12:00:04  更:2021-07-25 12:00:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 15:00:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码