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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> C# TCP通信服务器端(sockt) -> 正文阅读

[网络协议]C# TCP通信服务器端(sockt)

1、服务器端画面

2.客户端软件

?

?3.所需要的using?

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.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

4.端口监听(用try?防止抛异常)

 try
                {

                    Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    IPAddress ip = IPAddress.Any;
                    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 { }  

5、调用新线程持续监听

        Socket socketSend;
        void Listen(object o)
        {
            Socket socketWatch = o as Socket;
            while (true)
            {
                try
                {
                    socketSend = socketWatch.Accept();
                    dicsocket.Add(socketSend.RemoteEndPoint.ToString(), socketSend);
                    cboUser.Items.Add(socketSend.RemoteEndPoint.ToString());
                    cboUser.SelectedIndex = 0;
                    ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + "连接成功");
                    labifon.Text = "连接成功";
                    myline(labifon.Text);
                    labifon.ForeColor = Color.Blue;
                    Thread th = new Thread(Recive);
                    th.IsBackground = true;
                    th.Start(socketSend);
                    

                   // IPEndPoint clienip = (IPEndPoint)socketSend.RemoteEndPoint;
                   // txtIP.Text = clienip.Address.ToString();
                  



                }
                catch { }
              
                
            }
        }

6.接收监听到数据

 Dictionary<string, Socket> dicsocket = new Dictionary<string, Socket>();
        void Recive(object o)
        {
            Socket socketSend = o as Socket;
            byte[] buffer = new byte[1024 * 1024 * 2];

            while (true)
            {
                // r 实际接收到的字节数
                
                int r = socketSend.Receive(buffer);
                if (r == 0)
                {
                    labifon.Text = "连接断开";
                    myline(labifon.Text);
                    labifon.ForeColor = Color.Red;
                 
                    txtLog.Text = null;
                    break;
                }
                else
                {
                   
                }
                string str = Encoding.UTF8.GetString(buffer, 0, r);//接收到的字节 按指定编码转换成字符串
                // txtRev.Text = (socketSend.RemoteEndPoint + ":" + str);//把接收到字符显示到 文本框中
                torev(str);
                a = a + r;
                labRev.Text =a.ToString();
                txtRev.AppendText(socketSend.RemoteEndPoint + ""+ System.DateTime.Now.ToString("T") + "--->" + str + "\r\n");//转换后的字符串显示到文本框中

            }

        }
     

7、给客户端发送数据?

 private void Sendmsg()
 {
     Form1.Sendbtn = "0";
     tosend(txtMsg.Text);
     try
     {
         string str = txtMsg.Text.Trim();

         byte[] buffer = System.Text.Encoding.UTF8.GetBytes(str);
         txtRev.AppendText(socketSend.RemoteEndPoint + "" + System.DateTime.Now.ToString("T") + "<---" + str + "\r\n");
         socketSend.Send(buffer);

     }
     catch { }  

 }

真实项目,代码可用。转载留源。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:23:00  更:2021-07-26 12:23:15 
 
开发: 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年11日历 -2024/11/25 17:39:44-

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