iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#中怎么实现同步传输字符串
  • 624
分享到

C#中怎么实现同步传输字符串

2023-06-17 23:06:13 624人浏览 八月长安
摘要

C#中怎么实现同步传输字符串,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#服务端程序实例://C#服务端程序  class Server&

C#中怎么实现同步传输字符串,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

C#服务端程序实例:

//C#服务端程序  class Server {  static void Main(string[] args) {  const int BufferSize = 8192;// 缓存大小,8192字节   Console.WriteLine("Server is running ... ");  IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });  tcpListener listener = new TcpListener(ip, 8500);   listener.Start();   // 开始侦听  Console.WriteLine("Start Listening ...");  //C#服务端程序  // 获取一个连接,中断方法  TcpClient remoteClient = listener.AcceptTcpClient();  // 打印连接到的客户端信息  Console.WriteLine("Client Connected!{0} <-- {1}",  remoteClient.Client.LocalEndPoint,   remoteClient.Client.RemoteEndPoint);   // 获得流,并写入buffer中  NetworkStream streamToClient = remoteClient.GetStream();  byte[] buffer = new byte[BufferSize];  int bytesRead = streamToClient.Read(buffer, 0, BufferSize);  Console.WriteLine("Reading data, {0} bytes ...", bytesRead);  //C#服务端程序  // 获得请求的字符串  string msg = Encoding.Unicode.GetString(buffer, 0, bytesRead);  Console.WriteLine("Received: {0}", msg);  //C#服务端程序  // 按Q退出  }  }

这段C#服务端程序的上半部分已经很熟悉了,我就不再解释。remoteClient.GetStream()方法获取到了连接至客户端的流,然后从流中读出数据并保存在了buffer缓存中,随后使用Encoding.Unicode.GetString()方法,从缓存中获取到了实际的字符串。***将字符串打印在了控制台上。这段代码有个地方需要注意:在能够读取的字符串的总字节数大于BufferSize的时候会出现字符串截断现象,因为缓存中的数目总是有限的,而对于大对象,比如说图片或者其它文件来说,则必须采用“分次读取然后转存”这种方式,比如这样:

// 获取字符串  byte[] buffer = new byte[BufferSize];  int bytesRead;  // 读取的字节数  MemoryStream msStream = new MemoryStream();  do {  bytesRead = streamToClient.Read(buffer, 0, BufferSize);  msStream.Write(buffer, 0, bytesRead);  } while (bytesRead > 0);  //C#服务端程序  buffer = msStream.GetBuffer();  string msg = Encoding.Unicode.GetString(buffer);

这里我没有使用这种方法,一个是因为不想关注在太多的细节上面,一个是因为对于字符串来说,8192字节已经很多了,我们通常不会传递这么多的文本。当使用Unicode编码时,8192字节可以保存4096个汉字和英文字符。使用不同的编码方式,占用的字节数有很大的差异,在本文***面,有一段小程序,可以用来测试Unicode、UTF8、ASCII三种常用编码方式对字符串编码时,占用的字节数大小。

现在对客户端不做任何修改,然后运行先运行服务端,再运行客户端。结果我们会发现这样一件事:服务端再打印完“Client Connected!127.0.0.1:8500 <-- 127.0.0.1:xxxxx”之后,再次被阻塞了,而没有输出“Reading data, {0} bytes ...”。可见,与AcceptTcpClient()方法类似,这个Read()方法也是同步的,只有当客户端发送数据的时候,服务端才会读取数据、运行此方法,否则它便会一直等待。

关于C#中怎么实现同步传输字符串问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: C#中怎么实现同步传输字符串

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

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

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

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

下载Word文档
猜你喜欢
  • C#中怎么实现同步传输字符串
    C#中怎么实现同步传输字符串,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。C#服务端程序实例://C#服务端程序  class Server&...
    99+
    2023-06-17
  • C#中怎么实现一个异步传输字符串客户端
    这篇文章给大家介绍C#中怎么实现一个异步传输字符串客户端,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。C#异步传输字符串客户端的实现与服务端类似,我们首先对TcpClient进行一个简单的包装,使它的使用更加方便一些,...
    99+
    2023-06-17
  • c++中字符串怎么输入
    c++ 中字符串输入有两种方法:getline 函数,读取整行字符串,包括空格。cin >> 运算符,读取单个单词或以空格分隔的字符串。 C++ 中字符串输入 在 C++ ...
    99+
    2024-05-01
    c++
  • c++字符串逆序输出怎么实现
    有多种方法可以实现C++字符串的逆序输出,以下是两种常见的方法: 方法一:使用循环逆序输出 #include #include ...
    99+
    2023-10-25
    c++
  • c++中string怎么输入字符串
    在 c++ 中输入字符串,使用 getline 函数,其参数包括指向字符串变量的指针和输入流对象。其步骤如下:包含 头文件。使用 cin 输入流对象。使用 getline(cin, s...
    99+
    2024-05-09
    c++
  • c++中cin实现输入字符串方式
    目录c++ cin如何输入字符串1、cin2、cin.get()3、cin.getline()4、getline()c++ cin输入 不定长输入c++ cin如何输入字符串 1、c...
    99+
    2022-11-13
    c++ cin cin输入字符串 c++ cin输入
  • C#怎么实现字符串包含字符串
    本文小编为大家详细介绍“C#怎么实现字符串包含字符串”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#怎么实现字符串包含字符串”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实例using System...
    99+
    2023-06-17
  • C++实现LeetCode(205.同构字符串)
    [LeetCode] 205. Isomorphic Strings 同构字符串 Given two strings s and t, determi...
    99+
    2024-04-02
  • c语言中递归字符串逆序输出怎么实现
    要实现递归字符串逆序输出,可以按照以下步骤进行:1. 定义一个递归函数,该函数接受一个字符串作为参数。2. 在递归函数中,首先判断字...
    99+
    2023-08-24
    c语言
  • c#输入函数怎么输入字符串
    在 c# 中,输入字符串的两种主要方法是:console.readline():获取一行文本输入,适用于一次性输入。string.concat():串联多行文本输入,适用于连续...
    99+
    2024-05-11
    c#
  • c语言怎么输入字符串
    在C语言中,可以使用`scanf`函数来输入字符串。下面是一个例子:```c#include int main() {char st...
    99+
    2023-09-05
    c语言
  • java 中HttpClient传输xml字符串实例详解
    java 中HttpClient传输xml字符串实例详解介绍:我现在有一个对象page,需要将page对象转换为xml格式并以binary方式传输到服务端其中涉及到的技术点有:对象转xml流2、输出流转输入流3、httpClient发送二进...
    99+
    2023-05-31
    httpclient xml ava
  • c++中如何输入字符串
    c++kquote>c++ 输入字符串的方法:1) 直接输入:cin >> str; 2) 指定大小输入:cin.get(str, size); 3) 整行输入:get...
    99+
    2024-05-06
    c++
  • c++中cin可以输入字符串么
    c++中的cin可以输入字符串。cin将输入解释为一个连续的字符序列,直到遇到空格或其他分隔符。如果输入中包含空格,可以使用getline函数来读取整个字符串。cin不执行类型检查,因此...
    99+
    2024-05-01
    c++
  • C++怎么实现字符串交叉
    这篇文章主要介绍“C++怎么实现字符串交叉”,在日常操作中,相信很多人在C++怎么实现字符串交叉问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现字符串交叉”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-20
  • C++怎么实现字符串切割
    本篇内容介绍了“C++怎么实现字符串切割”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字符串切割的两种方法字符串切割的使用频率还是挺高的,s...
    99+
    2023-07-02
  • c++字符串替换指定字符怎么实现
    在C++中,可以使用std::string类来表示字符串,可以使用std::replace函数来替换字符串中的指定字符。下面是一个示...
    99+
    2023-10-19
    c++
  • C语言中字符串反转怎么实现
    这篇文章主要介绍C语言中字符串反转怎么实现,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代码实现#include <stdio.h>#include <string.h>#...
    99+
    2023-06-25
  • c++中byte数组转字符串怎么实现
    在C++中,可以使用以下两种方法将字节数组转换为字符串: 使用字符指针和循环: char byteArray[] = {65, ...
    99+
    2024-02-29
    c++
  • C#中怎么实现一个数值字符串
    本篇文章给大家分享的是有关C#中怎么实现一个数值字符串,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#数值字符串首先,我们得搞明白,什么是数值字符串。我们知道,在 C# 中,...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作