返回顶部
首页 > 资讯 > 服务器 >TCP服务器的C#实现
  • 746
分享到

TCP服务器的C#实现

tcp/ip服务器c# 2023-09-04 05:09:53 746人浏览 八月长安
摘要

tcp实现类 internal class TcpServer { public Socket ServerSocket { get; set; } public D

tcp实现类

internal class TcpServer    {        public Socket ServerSocket { get; set; }        public Dictionary<string,Socket> Sockets { get; set; }= new Dictionary<string,Socket>();        public byte[] SendBuffer { get; set; }        public byte[] ReceiveBuffer { get; set; }        ///         /// 创建构造函数        ///         ///         ///         public TcpServer(int sendBufferLength, int receiveBufferLength)        {            SendBuffer = new byte[sendBufferLength];            ReceiveBuffer = new byte[receiveBufferLength];        }        ///         /// 启动服务器        ///         ///         ///         public void Start(string ip, string port)        {            ServerSocket = CreateSocket(ip, port);            CreateThread();        }        ///         /// 服务端向指定客户端发送消息        ///         ///         ///         public void Send(string clientInfo, byte[] data)        {            Socket socket = Sockets[clientInfo];            socket.Send(data);        }        ///         /// 创建服务端Socket        ///         ///         ///         ///         private Socket CreateSocket(string ip, string port)        {            Socket socket=new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);            IPAddress address=IPAddress.Parse(ip);            IPEndPoint endPoint=new IPEndPoint(address, int.Parse(port));            socket.Bind(endPoint);            socket.Listen(20);            return socket;        }        ///         /// 创建监听客户端的线程并启动        ///         private void CreateThread()        {            Thread watchThread = new Thread(WatchConnection);            watchThread.IsBackground = true;            watchThread.Start();        }        ///         /// 监听客户端请求        ///         private void WatchConnection()        {            while (true)            {                Socket clientSocket = null;                try                {                    clientSocket = ServerSocket.Accept();                    IPEndPoint endPoint = (IPEndPoint)clientSocket.RemoteEndPoint;                    string ip= endPoint.Address.ToString();                    string port= endPoint.Port.ToString();                    Sockets.Add(ip + ":" + port, clientSocket);                }                catch (Exception ex)                {                    Console.WriteLine(ex.ToString());                    break;                }                ParameterizedThreadStart pts = new ParameterizedThreadStart(ClientReceiver);                Thread clientThread = new Thread(pts);                clientThread.IsBackground = true;                clientThread.Start(clientSocket);            }        }        ///         ///         ///         ///         private void ClientReceiver(object socket)        {            Socket clientSocket=socket as Socket;            int ReceiveBufferSize = 1 * 1024;            while (true)            {                int receivedLength = 0;                byte[] buffer = new byte[ReceiveBufferSize];                try                {                    List<byte> ls = new List<byte>();                    if (clientSocket != null)                    {                        receivedLength = clientSocket.Receive(buffer);                        if (receivedLength > 0)                        {Buffer.BlockCopy(buffer,0, ReceiveBuffer, 0, receivedLength);string msg = "Receive Success " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");byte[] datas = System.Text.Encoding.UTF8.GetBytes(msg);clientSocket.Send(datas);                        }                    }                }catch(Exception ex)                {                    Console.WriteLine(ex.ToString());                    break;                }            }        }    }

页面布局

<Grid Margin="10">        <Grid.RowDefinitions>            <RowDefinition Height="50"/>            <RowDefinition Height="50"/>            <RowDefinition Height="50"/>            <RowDefinition Height="*"/>            <RowDefinition Height="50"/>            <RowDefinition Height="50"/>        </Grid.RowDefinitions>        <TextBlock Grid.Row="0" Text="配置" VerticalAlignment="Center"/>        <DockPanel Grid.Row="1">            <DockPanel HorizontalAlignment="Left">                <TextBlock Text="地址" VerticalAlignment="Center" Margin="20 0 10 0"/>                <TextBox x:Name="TextBoxIp" Text="" Width="100" Height="36" VerticalContentAlignment="Center"/>                <TextBlock Text="端口" VerticalAlignment="Center" Margin="20 0 10 0"/>                <TextBox x:Name="TextBoxport" Text="" Width="100" Height="36" VerticalContentAlignment="Center"/>                <Button x:Name="ButtonStart" Content="启动" Width="75" Height="36" Margin="20,0,10,0" Click="ButtonStart_Click"/>            </DockPanel>            <DockPanel HorizontalAlignment="Right">                <TextBlock Text="客户端" VerticalAlignment="Center" Margin="20 0 10 0"/>                <ComboBox x:Name="ComboBoxClient" SelectedValuePath="Key" DisplayMemberPath="Key" Width="200" Height="36" Margin="20 0 10 0" SelectionChanged="ComboBoxClient_SelectionChanged"/>            </DockPanel>        </DockPanel>        <TextBlock Grid.Row="2" Text="接收" VerticalAlignment="Center"/>        <TextBox Grid.Row="3" Name="TextBoxReciver" Text=""/>        <TextBlock Grid.Row="4" Text="发送" VerticalAlignment="Center"/>        <StackPanel Grid.Row="5" Orientation="Horizontal">            <TextBox x:Name="TextBoxSender" Text="" Width="650" Height="36"/>            <Button Content="发送" Click="ButtonSend_CLick" Width="75" Height="36" HorizontalAlignment="Right" Margin="10 0 20 0"/>        </StackPanel>    </Grid>

后台代码

TcpServer tcpServer= null;        public MainWindow()        {            InitializeComponent();            tcpServer = new TcpServer(2 * 1024, 2 * 1024);            TextBoxIp.Text = "10.11.10.44";            TextBoxport.Text = "8080";        }        private void ButtonStart_Click(object sender, RoutedEventArgs e)        {            string address = this.TextBoxIp.Text;            string[] arr= address.Split('.');            if (arr.Length == 4)            {                foreach(string item in arr)                {                    int i=int.Parse(item);                    if(i < 0 || i > 255)                    {                        return;                    }                }            }            string port = this.TextBoxport.Text;            int j= int.Parse(port);            if (j < 0)            {                return;            }            ComboBoxClient.ItemsSource = tcpServer.Sockets;            tcpServer.Start(address, port);        }        string currentClient = null;        private void ComboBoxClient_SelectionChanged(object sender, SelectionChangedEventArgs e)        {            //currentClient = ComboBoxClient.SelectedValue.ToString();            ComboBox comboBox = sender as ComboBox;            string str = comboBox.SelectedValue.ToString();            if (tcpServer.Sockets.ContainsKey(str))            {                currentClient = str;            }        }        private void ButtonSend_CLick(object sender, RoutedEventArgs e)        {            if (currentClient != null)            {                string str = TextBoxSender.Text;                byte[] bytes=System.Text.Encoding.UTF8.GetBytes(str);                tcpServer.Send(currentClient,bytes);            }        }

运行结果
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_27474555/article/details/131287696

--结束END--

本文标题: TCP服务器的C#实现

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

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

猜你喜欢
  • TCP服务器的C#实现
    TCP实现类 internal class TcpServer { public Socket ServerSocket { get; set; } public D...
    99+
    2023-09-04
    tcp/ip 服务器 c#
  • Qt实现简单TCP服务器
    本文实例为大家分享了Qt学习记录之简单的TCP服务器,供大家参考,具体内容如下 简单的多连接TCP服务器​ 本节我们使用Qt来编写一个简单的多连接TCP服务器程序,涉及到的功能有监听...
    99+
    2024-04-02
  • TCP服务器—实现数据通信
    目录 前言 1.接口介绍 2.编写服务器 3.编写客户端 4.编译链接 5.测试 6.总结 前言         今天我们要介绍的是使用TCP协议实现数据通信,相比于之前写的UDP服务器实现数据信,在主体逻辑上并没有差别。客户端向服务...
    99+
    2023-08-31
    tcp/ip 服务器 网络
  • C#实现简单TCP服务器和客户端网络编程
    在C#中进行网络编程涉及许多类和命名空间,用于创建和管理网络连接、传输数据等。下面是一些主要涉及的类和命名空间: System.Net 命名空间:这个命名空间提供了大部分网络编程所需的类,包括: IPAddress:用于表示IP地址。...
    99+
    2023-10-09
    c# 开发语言
  • GO语言如何实现TCP服务器
    今天小编给大家分享一下GO语言如何实现TCP服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。interface/tcp/...
    99+
    2023-07-05
  • C# Winform 实现TCP发消息
    目录服务端:窗体代码:客户端:窗体代码运行结果:服务端: 窗体 代码: using System; using System.Collections.Generic; usin...
    99+
    2024-04-02
  • C/S架构学习之多线程实现TCP并发服务器
    并发概念:并发是指两个或多个事件在同一时间间隔发生;多线程实现TCP并发服务器的实现流程:一、创建套接字(socket函数):通信域选择IPV4网络协议、套接字类型选择流式; int sockfd =...
    99+
    2023-10-24
    c语言 架构 学习 linux tcp/ip 多线程 并发服务器
  • Android实现TCP断点上传 后台C#服务接收
    终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现,因为大多实现过断点...
    99+
    2022-06-06
    C# Android
  • TCP实现服务器和客户端通信
    目录 TCP介绍 代码实现 server(服务器端) 代码分析 client(客户端) 代码分析 结果展示 TCP介绍 TCP (Transmission Control Protocol) 是一种面向连接的协议,用于在计算机网络中传...
    99+
    2023-09-06
    tcp/ip 服务器 网络
  • GO语言实现TCP服务器的示例代码
    interface/tcp/Handler.go type Handler interface { Handle(ctx context.Context, conn net.C...
    99+
    2023-03-24
    GO编写TCP服务器 GO TCP服务器 GO TCP
  • 网络字节序——TCP接口及其实现简单TCP服务器
    网络字节序——TCP接口及其实现简单TCP服务器 文章目录 网络字节序——TCP接口及其实现简单TCP服务器简单TCP服务器的实现1. 单进程版:客户端串行版2. 多进程版:客户端并行版ne...
    99+
    2023-09-05
    网络 tcp/ip 服务器
  • 基于QT的TCP通信服务的实现
    目录一、结构1.1 套接字1.2 socket通信流程1.3 QTcpsocket1.4 QTcpServer二、设计UI2.1 客户端UI2.2 服务器端UI三、核心代码四、效果图...
    99+
    2024-04-02
  • C#基于Sockets类实现TCP通讯
    本文实例为大家分享了C#基于Sockets类实现TCP通讯的具体代码,供大家参考,具体内容如下 最终效果 TCPClient using System; using Syste...
    99+
    2024-04-02
  • C#如何实现TCP和UDP通信
    本篇内容主要讲解“C#如何实现TCP和UDP通信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#如何实现TCP和UDP通信”吧!C#在命名空间System.Net.Sockets中对伯克利套接...
    99+
    2023-07-05
  • C++实现TCP客户端及服务器Recv数据筛选处理详解
    目录正文代码解析1:当Tcp缓冲区的数据小于3个字节时,不进行判断2:判断包头是不是一致?3:包头匹配后,判断是否达到了数据包的固定协议长度?4:判断有效数据是否接收完整?5:数据校...
    99+
    2024-04-02
  • java中TCP实现回显服务器及客户端
    目录前言:Socket APISeverSocket APITCP实现回显服务器TCP实现回显客户端前言: 上篇文章介绍了TCP的特点。由于TCP的特点是有连接,面向字节流,可靠传输...
    99+
    2023-02-05
    java TCP回显服务器 java TCP 回显客户端
  • C++多线程实现TCP服务器端同时和多个客户端通信
    通讯建立后首先由服务器端发送消息,客户端接收消息;接着客户端发送消息,服务器端接收消息,实现交互发送消息。 服务器同时可以和多个客户端建立连接,进行交互; 在某次交互中,服务器端...
    99+
    2024-04-02
  • C#实现TCP和UDP通信的示例详解
    目录UDP发送UDP接收TCP发送TCP接收C#在命名空间System.Net.Sockets中对伯克利套接字提供了良好的封装,提供了完善的TCP和UDP通信功能。 从编程的角度出发...
    99+
    2023-03-01
    C# TCP UDP通信 C# TCP UDP C# TCP C# UDP
  • 基于C++实现TCP聊天室功能
    本文实例为大家分享了C++实现TCP聊天室功能的具体代码,供大家参考,具体内容如下 TCPServer.cpp: // TCPServer.cpp : Defines the ...
    99+
    2024-04-02
  • C++如何实现TCP聊天室功能
    小编给大家分享一下C++如何实现TCP聊天室功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下TCPServer.cpp:// TCPSer...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作