后台-插件-广告管理-内容页广告位一(手机)

您现在的位置是:首页 > 开发类 > 问答问答

Tcp 端口通信问题

2021-07-06 20:45:24问答人已围观

简介 我使用TcpClient在客户端和服务端建立了一个连接,两边的流也都已经打开了。如果客户端只向这个流中写入字符串或者文件,则服务器端可以处理,因为它不需要进行判断

我使用TcpClient在客户端和服务端建立了一个连接,两边的流也都已经打开了。如果客户端只向这个流中写入字符串或者文件,则服务器端可以处理,因为它不需要进行判断。但是如果我想客户端输入“1”发送字符串“xxx...”,输入“2”发送一张图片文件;而服务端是以流的形式接收,最后保存到了byte[]数组中,那么服务器如何知道发送的是字符串还是图片,又应该如何还原呢?

还是方法本身就有问题,应该在客户端开辟两个端口与服务器通信,一个命令端口,专门传输字符串;一个数据端口,专门用于传输图片?

谢谢!

最佳答案:

  服务端数组使用两个,Byte[] FileType, FileDatas.

  类似张小虾说的,客户端传来的文件流保存到 Byte[] Temp 中,而与客户端约定 Temp 前16 位(或更多)存放文件类型(.jpg、.gif等),字符串时则用空或某个约定标识表示(比如_STR),服务端接收时进行类似 Temp.CopyTo(FileType, 0, 16),Temp.CopyTo(FileDatas, 16)  的处理就可以了。在需要处理的地方转换 FileType 到 FileTypeString,然后 switch(TileTypeString) 当就可以了。 

  这时看,你说的先发送 1、2 等似乎没必要了,一来功能被 Temp 的前 16 位(?)取代,二来一次文件或内容传送,分成两次发送与接收,在性能上可能不够后者好(网络开销更高?)。

文章来源:https://q.cnblogs.com/q/2781/

Tags:.net技术 WindowsForms 

很赞哦! ()

后台-插件-广告管理-内容页广告位二(手机)

相关文章

后台-插件-广告管理-内容页广告位三(手机)
后台-插件-广告管理-内容页广告位四(手机)

文章评论

留言与评论(共有 0 条评论)
   
验证码:

本栏推荐

站点信息

  • 文章统计90331篇文章
  • 浏览统计10088次浏览
  • 评论统计1个评论
  • 标签管理标签云
  • 统计数据:统计代码
  • 微信公众号:扫描二维码,关注我们