我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C#实现套接字发送接收数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C#实现套接字发送接收数据

本文实例为大家分享了C#实现套接字发送接收数据的具体代码,供大家参考,具体内容如下

服务端


namespace TestServer
{
    public partial class ServerForm : Form
    {
        Socket socketSend;
        // 将远程连接的客户端的IP地址和socket存入集合
        Dictionary<string, Socket> dicSocket = new Dictionary<string, Socket>();
        public ServerForm()
        {
            InitializeComponent();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            try
            {
                // 当点击开始监听后,在服务器创建一个负责监听IP地址和端口号的socket
                Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPAddress ip = IPAddress.Any;//;IPAddress.Parse(txtServer.Text)
                IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));
                // 监听
                socketWatch.Bind(point);
                ShowMsg("监听成功");
                socketWatch.Listen(10);
                Thread th = new Thread(Listen);
                th.IsBackground = true;
                th.Start(socketWatch);
            }
            catch { }
        }

        void Listen(object o)
        {
            // 等待客户端连接 并创建一个负责通信的Socket
            Socket socketWatch = o as Socket;
            while (true)
            {
                socketSend = socketWatch.Accept();
                dicSocket.Add(socketSend.RemoteEndPoint.ToString(),socketSend);
                cboUsers.Items.Add(socketSend.RemoteEndPoint.ToString());
                ShowMsg(socketSend.RemoteEndPoint.ToString() + " : " + "连接成功");
                Thread th = new Thread(Recive);
                th.IsBackground = true;
                th.Start(socketSend);
            }
        }
        
        void Recive(object o)
        {
            socketSend = o as Socket;
            while (true)
            {
                // 客户端连接成功后,服务器应接受客户端发来的消息
                byte[] buffer = new byte[1024 * 1024 * 2];
                // 实际接收到的有效字节数
                int r = socketSend.Receive(buffer);
                if (r == 0)
                {
                    break;
                }
                string str = Encoding.UTF8.GetString(buffer, 0, r);
                ShowMsg(socketSend.RemoteEndPoint + " : " + str);
            }
        }

        

        void ShowMsg(string str)
        {
            txtLog.AppendText(str + "\r\n");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            string str = txtMsg.Text;
            byte[] buffer = Encoding.UTF8.GetBytes(str);
            string ip = cboUsers.SelectedItem.ToString();
            dicSocket[ip].Send(buffer);
            //socketSend.Send(buffer);
            txtMsg.Text = "";
        }

        private void btnSendUser_Click(object sender, EventArgs e)
        {
            string json = JsonConvert.SerializeObject(UserList());
            byte[] buffer = Encoding.UTF8.GetBytes(json);
            socketSend.Send(buffer);
        }

        private List<User> UserList()
        {
            List<User> userList = new List<User>();
            User user = null;
            string sql = "select * from user_table";
            SqlCommand cmd = SqlUtils.ConnectSql(sql);
            SqlDataReader sdr = cmd.ExecuteReader();
            while (sdr.Read())
            {
                user = new User(sdr.GetInt32(0), sdr.GetString(1), sdr.GetString(2), sdr.GetInt32(3));
                userList.Add(user);
            }
            return userList;
        }

    }
}

客户端


namespace TestClient
{
    public partial class ClientForm : Form
    {
        Socket socketSend;
        public ClientForm()
        {
            InitializeComponent();
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            try
            {
                // 创建负责通信的socket
                socketSend = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
                IPAddress ip = IPAddress.Parse(txtServer.Text);
                IPEndPoint point = new IPEndPoint(ip,Convert.ToInt32(txtPort.Text));
                socketSend.Connect(point);
                ShowMsg("连接成功");
                Thread th = new Thread(Recive);
                th.IsBackground = true;
                th.Start();
            }
            catch { }
        }

        void Recive()
        {
            while (true)
            {
                // 客户端连接成功后,服务器应接受客户端发来的消息
                byte[] buffer = new byte[1024 * 1024 * 2];
                // 实际接收到的有效字节数
                int r = socketSend.Receive(buffer);
                if (r == 0)
                {
                    break;
                }
                string str = Encoding.UTF8.GetString(buffer, 0, r);
                ShowMsg(socketSend.RemoteEndPoint + " : " + str);
            }
        }

        void ShowMsg(string str)
        {
            txtLog.AppendText(str + "\r\n");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void btnSend_Click(object sender, EventArgs e)
        {
            string str = txtMsg.Text.Trim();
            byte[] buffer = Encoding.UTF8.GetBytes(str);
            socketSend.Send(buffer);
            txtMsg.Text = "";
        }
    }
}

效果

发送json数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C#实现套接字发送接收数据

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

下载Word文档

猜你喜欢

C#如何实现套接字发送接收数据

这篇文章主要介绍了C#如何实现套接字发送接收数据,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下服务端namespace TestServer{ public
2023-06-21

vue项目嵌套iframe怎么实现发送、接收数据

这篇文章主要介绍“vue项目嵌套iframe怎么实现发送、接收数据”,在日常操作中,相信很多人在vue项目嵌套iframe怎么实现发送、接收数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue项目嵌套if
2023-06-30

浅析nodejs实现Websocket的数据接收与发送

WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。在WebSocket API中,浏览器和服务器只需要要做一个握手(handshaking)的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就
2022-06-04

php通过curl方式实现发送接收xml数据

通过cURL发送和接收XML数据是一种强大的PHP功能。本文详细介绍了如何使用PHP和cURL库发送和接收XML数据。从初始化cURL会话到执行请求和解析响应,本文涵盖了整个过程,并提供了示例代码和最佳实践。通过遵循本指南,开发人员可以轻松实现XML数据的交换,用于各种应用程序,例如API集成和数据传输。
php通过curl方式实现发送接收xml数据
2024-04-02

解决网络数据只发送不接收的实现方法

  网络数据是现实世界中最常用的数据类型之一。人与人之间的关系、城市之间的道路连接、科研论文之间的引用都组成了网络。树形结构表达了层次结构关系,而不具备层次结构的关系数据,可统称为网络数据。现在小编给大家带来的教程是:解决网络数据只发送不接收的实现方法。  网络的畅通主要就是表现在既有发送包,同时也有接收包,仅仅只有在
解决网络数据只发送不接收的实现方法
2024-04-18

C#怎么使用udp实现消息的接收和发送

本篇内容主要讲解“C#怎么使用udp实现消息的接收和发送”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么使用udp实现消息的接收和发送”吧!使用udp实现消息的接收和发送代码比较简单,但是
2023-07-05

C#中怎么实现异步套接字

今天就跟大家聊聊有关C#中怎么实现异步套接字,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。下面的C#异步套接字实现实例程序创建一个连接到服务器的客户端。该客户端是用C#异步套接字生成
2023-06-17

C#中如何实现异步套接字

这篇文章将为大家详细讲解有关C#中如何实现异步套接字,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建一个连接到服务器的客户端。该客户端是用C#异步套接字生成的,因此在等待服务器返回响应时不
2023-06-17

C#使用udp如何实现消息的接收和发送

这篇文章主要介绍了C#使用udp如何实现消息的接收和发送问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-26

Android如何实现接收和发送短信

每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能。 一、接收短信 1、创建内部广播接收器类,接收系统发出的短信广播 2、从获得的内容中解析出短信发送者和短信内容 3、在Activity中注册广播 4、添加接
2022-06-06

Java NIO实例UDP发送接收数据代码分享

Java的NIO包中,有一个专门用于发送UDP数据包的类:DatagramChannel,UDP是一种无连接的网络协议,一般用于发送一些准确度要求不太高的数据等。完整的服务端程序如下:public class StatisticsServe
2023-05-30

Android接收和发送短信的实现代码

Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信。2022-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录