求助:用SOCKET实现C/S发送 数据/XML文件 问题

Damon_Code 2016-04-01 03:53:42
首先感谢读贴。
正文:
本文非计算机专业,大学学过C,自己最近看C#。
目前要做一个C/S模式的软件,就是在服务器上实现计算功能,在客户端上实现显示,二者打算用SOCKET通讯,由于在服务器上计算后的数据量比较多,而且类型有点多,不知道怎么用SOCKET发送到客户端,对SOCKET看了些网上的资料,知道只能发送字节流,所以不知道我应该怎么组织数据,还有看网上的打包、封包,也是一头雾水,网上的例子都是简单的发送几个字符串,我的数据有点多,是要自己拼接吗?还是可以生成一个XML文档,但是不保存,然后发送?


问题:
1、能不能把数据组织到XML格式,用SOCKET发送?
2、如果可以用XML,是不是可以只组织好,不保存,就发送?
3、如果可以,我的理解是,定义一个XML名字,比如ABC,然后把数据组织到这个XML格式中,把ABC发送,对吗?
4、如果数据比较多,SOCKET的一个包会不会不够大?但是看网上又说包是没有大小限制的,不解。



相关帖子:
如何不生成XML文件通过Socket传XML文件内容:http://blog.csdn.net/huagong_adu/article/details/6886581
C语言的socket 怎么发送XML格式的数据:http://bbs.csdn.net/topics/390933622

希望有经验的网友,给个提示,或者思路,因为不是搞计算机的,现在脑子里没有思路,学习起来也不知道看什么书,比较迷茫,先谢谢各位!
...全文
515 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
全栈极简 2016-04-06
  • 打赏
  • 举报
回复
组装成xml文件,然后通过socket发送应该没有问题的吧。

http://blog.csdn.net/chinacsharper/article/details/9183369
test100000001 2016-04-06
  • 打赏
  • 举报
回复
引用 9 楼 u014710355 的回复:
[quote=引用 7 楼 qq_21045521 的回复:] 我这有个demo,可以发送文件,消息,震动,~可以发你邮箱~
可以的哈,多谢!我的邮箱,dengbt@foxmail.com[/quote] 已发
Damon_Code 2016-04-06
  • 打赏
  • 举报
回复
引用 13 楼 guwei4037 的回复:
组装成xml文件,然后通过socket发送应该没有问题的吧。 http://blog.csdn.net/chinacsharper/article/details/9183369
我先看看您的这个文章,谢谢。
Damon_Code 2016-04-06
  • 打赏
  • 举报
回复
引用 11 楼 nry19871012 的回复:
直接使用现成的通信组件,你这种等于需要自己做一个完整的通信了。需要考虑的很多像 分包 组包 数据完整性校验等等。
你好,请问您说的,通信组件是指什么呢?谢谢。难道是自己已经封装好的,类似于中间件的吗?
Damon_Code 2016-04-06
  • 打赏
  • 举报
回复
引用 10 楼 assky124 的回复:
ASP.net WebService 不行么?非要自己造轮子
首先感谢回帖。 因为不是学计算机的,对ASP.net WebService不是很了解,从我目前看的资料看,好像ASP.net WebService主要是写网页是吗?我这里需要的不是网页形式的,是Windows form 形式的,请问,用ASP.net WebService可以做吗?谢谢。
nry19871012 2016-04-05
  • 打赏
  • 举报
回复
直接使用现成的通信组件,你这种等于需要自己做一个完整的通信了。需要考虑的很多像 分包 组包 数据完整性校验等等。
Damon_Code 2016-04-05
  • 打赏
  • 举报
回复
引用 7 楼 qq_21045521 的回复:
我这有个demo,可以发送文件,消息,震动,~可以发你邮箱~
可以的哈,多谢!我的邮箱,dengbt@foxmail.com
Damon_Code 2016-04-05
  • 打赏
  • 举报
回复
多谢,我先看看你的帖子哈
assky124 2016-04-05
  • 打赏
  • 举报
回复
ASP.net WebService 不行么?非要自己造轮子
test100000001 2016-04-02
  • 打赏
  • 举报
回复
我这有个demo,可以发送文件,消息,震动,~可以发你邮箱~
  • 打赏
  • 举报
回复
换行回车 --> 回车换行
  • 打赏
  • 举报
回复
我写过一个 tcp 的 demo,可以参见帖子 http://bbs.csdn.net/topics/390987992其中,比较简单地用“换行回车”作为每一个通用信令的结束符。 当你要传送 xml 或者 json 字符串时,可以把每一个消息中的“回车”去掉(仅保留换行),然后发送给对方。对方收到之后再作为xml或者json来理解。
Damon_Code 2016-04-01
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
xml只是一种数据格式,xml可以转化成字符串,字符串可以转化成byte[],socket能发送接收byte[] 所以 1、可以 2、当然 3、你可以通过拼接字符串的方式来得到xml字符串,也可以直接将实体序列化为xml字符串 4、分割多个包,每个包有长度标志位
感谢版主的热心回答,看了实体序列化为xml字符串,感觉比较适合我的需求,再次感谢!
Damon_Code 2016-04-01
  • 打赏
  • 举报
回复
引用 2 楼 Yokeqi 的回复:
沾版主大大的光,混个脸熟。 关于Socket能否发送Xml格式数据的问题大大已经解释得很到位了。 我补充个如果你说发送大数据量的问题,一个是将数据分割,另一个是先压缩后再发送。 另外一个我觉得简单的方式是: 服务端生成数据 -> 转换成DataSet -> DataSet to Stream (DataSet.WriteXml)-> Compress -> Socket send Socket receive -> Decompress -> Stream to dataset (DataSet.ReadXml)
感谢回复,我先根据你的提示学习一下,有不懂的在来问,谢谢。
枫0子K 2016-04-01
  • 打赏
  • 举报
回复
沾版主大大的光,混个脸熟。 关于Socket能否发送Xml格式数据的问题大大已经解释得很到位了。 我补充个如果你说发送大数据量的问题,一个是将数据分割,另一个是先压缩后再发送。 另外一个我觉得简单的方式是: 服务端生成数据 -> 转换成DataSet -> DataSet to Stream (DataSet.WriteXml)-> Compress -> Socket send Socket receive -> Decompress -> Stream to dataset (DataSet.ReadXml)
  • 打赏
  • 举报
回复
xml只是一种数据格式,xml可以转化成字符串,字符串可以转化成byte[],socket能发送接收byte[] 所以 1、可以 2、当然 3、你可以通过拼接字符串的方式来得到xml字符串,也可以直接将实体序列化为xml字符串 4、分割多个包,每个包有长度标志位
=劫=机=岁=月=

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧