iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#以太网Sockets客户端设计实现
  • 736
分享到

C#以太网Sockets客户端设计实现

C#以太网Sockets客户端C#以太网Sockets 2023-02-06 15:02:35 736人浏览 泡泡鱼
摘要

目录【1】客户端对象【2】初始化【3】连接【4】收发【5】断开【1】客户端对象 using System.net;// DNS_静态对象 using System.Net.Socke

【1】客户端对象

using System.net;// DNS_静态对象
using System.Net.Sockets;
 
// 字段位置
private Socket socket业务;  //对象既可以当服务器,又可以当客户端
tcpListener tcpListener;   //服务器对象
TcpClient tcpClient;       //客户端对象

【2】初始化

Socket tcpClient客户端;

tcpClient客户端 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

【3】连接

 #region 连接
 
        /// <summary>
        /// 建立连接
        /// </summary>
        /// <param name="ip">IP地址</param>
        /// <param name="port">端口号</param>
        public void Connect(string ip, string port)
        {
            try
            {
                //实例化Socket
                tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 
                //设置Socket属性
                tcpClient.SendTimeout = this.SendTimeOut;
 
                tcpClient.ReceiveTimeout = this.ReceiveTimeOut;
 
                //封装一个EndPoint对象
                IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(ip), int.Parse(port));
 
                //建立连接
                tcpClient.Connect(endPoint);
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }//显示错误
        }
 
        #endregion

【4】收发

  #region 读取并接受
 
        /// <summary>
        /// 发送并接受
        /// </summary>
        /// <param name="SendByte"></param>
        /// <returns></returns>
        public byte[] SendAndReceive(byte[] SendByte)
        {
            try
            {
                if (tcpClient.Available >= 1)//   丢弃字节
                {
                    #region 加载
                    byte[] buffer = new byte[tcpClient.Available];//准备加载
                    tcpClient.Receive(buffer, buffer.Length, SocketFlags.None);//开始加载
                    #endregion
                }
                #region 计时
                //====现在时间======================================
                str_发送后记时 = new StringBuilder(String.FORMat("{0,9}",
                    DateTime.Now.Second.ToString() + "s"
                    + DateTime.Now.Millisecond.ToString() + "ms:"));  //固定长度9 右对齐
                #endregion
                tcpClient.Send(SendByte);// 发送
               
                #region 委托
                if (Help_ModBus.Wt_set != null)
                {
                    Help_ModBus.Wt_set(SendByte, str_发送后记时.ToString());
                }
                #endregion
 
                return ReadMessage();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }//显示错误
            finally
            {
                //InteractiveLock.Leave();
            }
            return null;
        }
 
 
        /// <summary>
        /// 读取缓冲区值
        /// </summary>
        /// <returns></returns>
        private byte[] ReadMessage()
        {
            DateTime startTime = DateTime.Now;//记录开始时间
            do
            {
                if (tcpClient.Available >= 5 )//   字节
                {
                    #region 计时
                    //====现在时间======================================
                    str_发送后记时 = new StringBuilder(String.Format("{0,9}",
                        DateTime.Now.Second.ToString() + "s"
                        + DateTime.Now.Millisecond.ToString() + "ms:"));  //固定长度9 右对齐
                    #endregion
                    #region 加载
                    byte[] buffer = new byte[tcpClient.Available];//准备加载
                    tcpClient.Receive(buffer, buffer.Length, SocketFlags.None);//开始加载
                    #endregion
                    #region 委托
                    if (Help_ModBus.Wt_get != null)//委托呼叫ui
                    {
                        Help_ModBus.Wt_get(buffer, str_发送后记时.ToString());// ui显示
                    }
                    #endregion
                    return buffer;
                }
                #region 超时跳出
                if ((DateTime.Now - startTime).TotalMilliseconds > ReceiveTimeOut+500)// 超时 1.5s
                {
                    break;// 已经超时
                }
                #endregion
 
            } while (true);
            return null; // 相当失败
 
 
 
            //Thread.Sleep(ReceiveTimeOut);// 延时15ms
            //int count = tcpClient.Available;  //  字节
            //if (count == 0)
            //{
            //    return null;
            //}
            //else
            //{
            //    byte[] buffer = new byte[count];
            //    tcpClient.Receive(buffer, count, SocketFlags.None);
            //    //byte[] buffer2 = Encoding.Default.GetBytes(str_发送后记时.ToString());
            //    byte[] buffer3 = { buffer2 , buffer };
            //    //return buffer2;
            //    #region 计时
            //    //====现在时间======================================
            //    str_发送后记时 = new StringBuilder(String.Format("{0,9}",
            //        DateTime.Now.Second.ToString() + "s"
            //        + DateTime.Now.Millisecond.ToString() + "ms:"));  //固定长度9 右对齐
            //    #endregion
            //    if (Wt_get!=null)
            //    {
            //        Wt_get(buffer, str_发送后记时.ToString());
            //    }
            //    return buffer;
            //}
 
            //==================================
            //int count = tcpClient.Available;
            //int cycletimer = 0;
            //while (count == 0)
            //{
            //    count = tcpClient.Available;
            //    cycletimer++;
            //    Thread.Sleep(20);
            //    if (cycletimer > MaxCycleTimer)
            //    {
            //        break;
            //    }
            //}
            //if (count == 0)
            //{
            //    return null;
            //}
            //else
            //{
            //    byte[] buffer = new byte[count];
            //    tcpClient.Receive(buffer, count, SocketFlags.None);
            //    return buffer;
            //}
        }
        #endregion

【5】断开

 #region 断开
        /// <summary>
        /// 断开连接
        /// </summary>
        public void DisConnect()
        {
            if (tcpClient != null)
            {
                tcpClient.Close();
            }
        }
 
        #endregion

参数参考:

C#以太网Sockets服务器设计

到此这篇关于C#以太网Sockets客户端设计实现的文章就介绍到这了,更多相关C#以太网Sockets客户端内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C#以太网Sockets客户端设计实现

本文链接: https://www.lsjlt.com/news/194360.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#以太网Sockets客户端设计实现
    目录【1】客户端对象【2】初始化【3】连接【4】收发【5】断开【1】客户端对象 using System.Net;// DNS_静态对象 using System.Net.Socke...
    99+
    2023-02-06
    C#以太网Sockets客户端 C#以太网Sockets
  • C#以太网Sockets服务器设计实现
    目录【1】引用命名空间:【2】字段: 声明对象【3】初始化:参数【1】引用命名空间: //System.Net.Sockets using System.Net.Sockets; /...
    99+
    2023-02-06
    C#以太网Sockets服务器 C#以太网Sockets
  • C#编写网游客户端的实现
    目录一、项目初步设置 二、连接服务器三、发送数据四、播放背景音乐五、实现游戏背景图片变换六、总结参考一、项目初步设置 1. 新建项目 新建一个WIndows 窗体应用(.Net F...
    99+
    2024-04-02
  • C#网络编程客户端程序设计方法是什么
    本篇内容介绍了“C#网络编程客户端程序设计方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#网络编程客户端程序设计(1).连接到服...
    99+
    2023-06-17
  • C++ 实现高性能HTTP客户端
    目录一、什么是Http Client二、请求的过程1. 创建Http任务2. 填写header并发出3. 处理返回结果三、高性能的基本保证1. 异步调度模式2. 连接复用3. 解锁其...
    99+
    2024-04-02
  • 计算机网络 简单FTP客户端软件的实现
    一.原理概述 1.1 FTP原理概述 文件传送协议FTP(File Transfer Protocol)是TCP/IP体系的一个重要协议,它采用Internet标准文件传输协议FTP的用户界面,向用户提供了一组用来管理计算机之间文件传输的应...
    99+
    2023-12-23
    计算机网络 服务器 网络
  • FTP客户端c代码功能实现
    现在市面上有很多免费的FTP软件:如FileZilla ,那如果想自己在代码中实现与ftp服务器的上传下载文件该如何实现那?  本质上ftp协议就是TCP基础上建立的一种协议,具体如下。 FTP 概述 文件传输协议(FTP)作为网络共享文件...
    99+
    2023-09-24
    服务器 网络 linux
  • C++实现一个简单的SOAP客户端
    目录1、简介2、实现客户端2.1 准备xml文件2.2 引入库文件2.3 构建请求数据的xml2.4 执行Http协议的POST方法2.5 解析响应数据的xml3、测试客户端1、简介...
    99+
    2024-04-02
  • 如何实现C#服务端与客户端连接
    今天就跟大家聊聊有关如何实现C#服务端与客户端连接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#服务端与客户端连接实现的时间性:当服务器开始对端口侦听之后,便可以创建客户端与它建...
    99+
    2023-06-17
  • C#实现简单TCP服务器和客户端网络编程
    在C#中进行网络编程涉及许多类和命名空间,用于创建和管理网络连接、传输数据等。下面是一些主要涉及的类和命名空间: System.Net 命名空间:这个命名空间提供了大部分网络编程所需的类,包括: IPAddress:用于表示IP地址。...
    99+
    2023-10-09
    c# 开发语言
  • C#实现MQTT服务端与客户端通讯功能
    关于MQTT MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设...
    99+
    2024-04-02
  • C#中怎么实现服务端与客户端通信
    C#中怎么实现服务端与客户端通信,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。C#服务端与客户端通信实现实例:TcpClient client;&nb...
    99+
    2023-06-17
  • C#中如何实现服务端与客户端通信
    这篇文章将为大家详细讲解有关C#中如何实现服务端与客户端通信,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#服务端与客户端通信实现实例:class Server {&n...
    99+
    2023-06-17
  • C#中怎么实现服务端与客户端连接
    这篇文章将为大家详细讲解有关C#中怎么实现服务端与客户端连接,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#服务端与客户端连接实现实例:class Client {&n...
    99+
    2023-06-17
  • C++实现简单FTP客户端软件开发
    本文实例为大家分享了C++实现简单FTP客户端软件开发的具体实现代码,供大家参考,具体内容如下 题目 简单FTP客户端软件开发(100分)网络环境中的一项基本应用就是将文件从一台计算...
    99+
    2022-11-13
    C++ FTP 客户端
  • C#编写游戏客户端的实现代码
    一、连接客户端原理流程图 二、功能要求 1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中; 2) 客户端要发给服务器的数据,通过 textbox输入 或者点...
    99+
    2024-04-02
  • python实现多人聊天服务器以及客户端
    本文实例为大家分享了python实现多人聊天服务器以及客户端,供大家参考,具体内容如下 所用python的知识点: 网络编程:socket 多线程:threading 图形化编程:t...
    99+
    2024-04-02
  • C#用websocket实现简易聊天功能(客户端)
    本文实例为大家分享了C#用websocket实现简易聊天功能的具体代码,供大家参考,具体内容如下 前言 使用C#语言进行开发,基于.NET FrameWork4功能包含群聊,和私聊参...
    99+
    2024-04-02
  • C#如何实现MQTT服务端与客户端通讯功能
    这期内容当中小编将会给大家带来有关C#如何实现MQTT服务端与客户端通讯功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。关于MQTTMQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 2...
    99+
    2023-06-29
  • C++编写的WebSocket服务端客户端实现示例代码
    目录使用过标准的libwebsockets服务端库测试过,主要是短小精悍,相对于libwebsockets不需要依赖zlib和openssl 以及其他库,直接make就可以使用了,l...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作