【C#】制作TCP服务器

打印 上一主题 下一主题

主题 673|帖子 673|积分 2019


前言   


    
        当使用C#编TCP服务器是指使用传输控制协议(Transmission Control Protocol,TCP)作为通信协议的服务器程序。TCP是一种面向毗连的、可靠的、基于字节省的传输层通信协议,它能够在网络通信中确保数据的可靠传输。写一个TCP服务器(通常被称为上位机服务器)时,您可以使用System.Net.Sockets命名空间中的TcpListener和TcpClient类。以下是一个简单的TCP服务器示例,该服务器监听特定端口上的毗连,并在接收到消息时回复客户端。
        本文使用到的Visual Studio 是微软(Microsoft)开辟的一款强大的集成开辟情况(IDE),它支持多种编程语言,包括 C#、C++、Visual Basic、F#、Python、JavaScript 等,并广泛用于开辟各种范例的应用程序,如 Web 应用程序、桌面应用程序、移动应用程序、游戏、云服务等。
一、主要功能


1.监听毗连请求:TCP服务器的主要功能之一是监听网络上的毗连请求。它会在指定的网络端口上期待客户端的毗连请求。
2.创建毗连:当客户端请求与服务器创建毗连时,TCP服务器会进行三次握手操作,以创建一个可靠的毗连。
3.数据收发:一旦毗连创建成功,服务器可以持续接收来自客户端的数据,并做出相应的处理和回应。TCP协议提供了错误改正、流量控制和拥塞控制等功能,以确保数据传输的可靠性和有序性。
二、应用场景


TCP服务器在各种网络应用程序中都有广泛的应用,包括但不限于:
1.数据传输和文件传输:TCP服务器可以用于传输数据和文件,确保数据的完备性和可靠性。
2.网络通信:TCP服务器可以用作网络通信的中心节点,接收来自客户端的请求并提供相应的相应。
3.聊天和信息传递:多个客户端可以同时毗连到TCP服务器进行即时通信,服务器可以接收客户端发送的消息,并将其转发给其他毗连的客户端。
4.远程控制和远程访问:通过TCP服务器,客户端可以远程操作服务器的功能或获取服务器上的资源。
5.数据库管理:TCP服务器可以用于与数据库进行通信,并提供数据库管理功能,如查询、插入、更新、删除等。
6.Web服务器:TCP服务器在Web应用中扮演偏紧张脚色,用于托管和提供网站和Web应用程序。当欣赏器向服务器发出HTTP请求时,TCP服务器会接收和处理这些请求,并返回相应的资源。
三、特点


1.可靠性:TCP协议通过确认和重传机制来确保数据的可靠传输。
2.面向毗连:TCP协议是一种面向毗连的协议,它需要在数据传输之前先创建毗连。
3.基于字节省:TCP协议将数据看作是无结构的字节省,它不关心数据的内容和意义。
4.全双工通信:TCP协议支持全双工通信,即数据可以在同一时间双向传输。
四、软件编程


1.界面设置



(1)在Visual Studio创建一个窗体项目



(如下图所示)

(2)窗体计划


在工具箱找到相对应的工具放到计划里面(如下图所示)

2.代码编写


(1)发送按钮编写



        如下所示
  1.  private void uiButtonSend_Click(object sender, EventArgs e)
  2.  {
  3.      String str = this.uiTextBoxSend.Text;
  4.      byte[] data = Encoding.Default.GetBytes(str);
  5.      stream.Write(data, 0, data.Length);
  6.  }
复制代码
(2)毗连服务器


        如下所示
  1.  private void Form1_Load(object sender, EventArgs e)
  2.  {
  3.      tcpListener = new TcpListener(IPAddress.Parse("10.92.200.165"), 3400);
  4.      tcpListener.Start();
  5.      new Task(() =>
  6.      {
  7.          //while (true)
  8.          {
  9.              tcpClient = tcpListener.AcceptTcpClient();
  10.              stream = tcpClient.GetStream();
  11.              new Task(() => MyReceiveData(tcpClient)).Start();
  12.          }
  13.      }).Start();
  14.  }
复制代码
(3)总体代码

  1. using Sunny.UI;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Net;
  9. using System.Net.Sockets;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13. namespace Tpc服务
  14. {
  15.     public partial class Form1 : UIForm
  16.     {
  17.         private TcpListener tcpListener;
  18.         private TcpClient tcpClient;
  19.         private NetworkStream stream;
  20.         public Form1()
  21.         {
  22.             InitializeComponent();
  23.         }
  24.         private void Form1_Load(object sender, EventArgs e)
  25.         {
  26.             tcpListener = new TcpListener(IPAddress.Parse("10.92.200.165"), 3400);
  27.             tcpListener.Start();
  28.             new Task(() =>
  29.             {
  30.                 //while (true)
  31.                 {
  32.                     tcpClient = tcpListener.AcceptTcpClient();
  33.                     stream = tcpClient.GetStream();
  34.                     new Task(() => MyReceiveData(tcpClient)).Start();
  35.                 }
  36.             }).Start();
  37.         }
  38.         private void MyReceiveData(TcpClient tcpClient )
  39.         {
  40.             byte[] data = new byte[1024];
  41.             while (true)
  42.             {
  43.                 int count = stream.Read(data, 0, 1024);
  44.                 String str = Encoding.Default.GetString(data, 0, count);
  45.                 this.Invoke(new Action(() =>
  46.                 {
  47.                     this.uiTextBoxReceive.Text += str + "\r\n";
  48.                 }));
  49.             }
  50.         }
  51.         private void uiButtonSend_Click(object sender, EventArgs e)
  52.         {
  53.             String str = this.uiTextBoxSend.Text;
  54.             byte[] data = Encoding.Default.GetBytes(str);
  55.             stream.Write(data, 0, data.Length);
  56.         }
  57.         private void uiTextBoxReceive_TextChanged(object sender, EventArgs e)
  58.         {
  59.         }
  60.         private void uiTextBoxSend_TextChanged(object sender, EventArgs e)
  61.         {
  62.         }
  63.     }
  64. }
复制代码
五、工程架构


六、总结



        在配置TCP服务器时,需要确认网络情况、开放相应的端口、确认服务运行状态等。可以使用telnet或nc等工具测试TCP毗连是否正常。
        TCP服务器是一种基于TCP协议的服务器程序,它在网络通信中起偏紧张的脚色。通过使用TCP协议,服务器可以包管数据的可靠性和次序性,确保数据的正确传输。TCP服务器广泛应用于各种网络应用程序中,如网络游戏、网站服务器、文件传输、邮件服务器等。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

吴旭华

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表