社区
C#
帖子详情
一个关于Socket的问题
jerry_zhang99
2010-11-30 02:27:00
现在我要做一个socket通讯的 client端。在client端发送指令之后,server端,可能要分几次返回信息,而且会包括错误处理。
于是我想这样,发client端的发送和接收数据分开,client端发送数据之后,可以任意接收数据,同时也可以发送数据,有这样实现的案例吗。
...全文
210
12
打赏
收藏
一个关于Socket的问题
现在我要做一个socket通讯的 client端。在client端发送指令之后,server端,可能要分几次返回信息,而且会包括错误处理。 于是我想这样,发client端的发送和接收数据分开,client端发送数据之后,可以任意接收数据,同时也可以发送数据,有这样实现的案例吗。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jerry_zhang99
2011-01-04
打赏
举报
回复
[Quote=引用 7 楼 jialine0426 的回复:]
管理通讯信道用TCP,数据通讯用UDP,记得包大小不要超过MTU设置的值,还要自定义UDP包的内容,方便重新组合数据
[/Quote]
包的大小为什么不要超过MTU设置的值,我记得,在tcp中socket会自动分发数据的啊
zslblue
2011-01-04
打赏
举报
回复
[Quote=引用楼主 jerry_zhang99 的回复:]
现在我要做一个socket通讯的 client端。在client端发送指令之后,server端,可能要分几次返回信息,而且会包括错误处理。
于是我想这样,发client端的发送和接收数据分开,client端发送数据之后,可以任意接收数据,同时也可以发送数据,有这样实现的案例吗。
[/Quote]
异步通信就是这样的。
发送和接收都是独立的线程,互不影响,当让,在需要的时候可以通过一些全局的变量来同步。我写的Socket程序就是这样的。
发送: 监测到需要发送就发送
接收:由数据接收就接受
烈火蜓蜻
2011-01-04
打赏
举报
回复
[Quote=引用 4 楼 jerry_zhang99 的回复:]
引用 2 楼 jguon 的回复:
多开几个线程就可以了
多开几个线程,就是多了几个连接,把socket保留可以一直通信,但是,还是必须在接收完了之后才能再次发送啊,接收的数据可能要分3-4次,能不能完全分开呢,不用考虑Receive()就可以send
[/Quote]
那你就要判断了,如果数据接收 完成了,就发送数据,
这里要看你自己怎么定义这个接收算完成了。
jerry_zhang99
2011-01-04
打赏
举报
回复
[Quote=引用 9 楼 wangtaiping 的回复:]
引用 8 楼 jerry_zhang99 的回复:
引用 7 楼 jialine0426 的回复:
管理通讯信道用TCP,数据通讯用UDP,记得包大小不要超过MTU设置的值,还要自定义UDP包的内容,方便重新组合数据
包的大小为什么不要超过MTU设置的值,我记得,在tcp中socket会自动分发数据的啊
因为分包要耗费资源 要加包头等等
[/Quote]
您的意思是,自己来分包,省去了一部分协议栈的工作 是吗?这样也提高效率
wangtaiping
2011-01-04
打赏
举报
回复
[Quote=引用 8 楼 jerry_zhang99 的回复:]
引用 7 楼 jialine0426 的回复:
管理通讯信道用TCP,数据通讯用UDP,记得包大小不要超过MTU设置的值,还要自定义UDP包的内容,方便重新组合数据
包的大小为什么不要超过MTU设置的值,我记得,在tcp中socket会自动分发数据的啊
[/Quote]
因为分包要耗费资源 要加包头等等
jialine0426
2010-11-30
打赏
举报
回复
管理通讯信道用TCP,数据通讯用UDP,记得包大小不要超过MTU设置的值,还要自定义UDP包的内容,方便重新组合数据
Harvey_He
2010-11-30
打赏
举报
回复
发送端口和接受端口不能分开么?
RoJJ_97
2010-11-30
打赏
举报
回复
客户端的发送,接收都采用异步。
jerry_zhang99
2010-11-30
打赏
举报
回复
[Quote=引用 2 楼 jguon 的回复:]
多开几个线程就可以了
[/Quote]
多开几个线程,就是多了几个连接,把socket保留可以一直通信,但是,还是必须在接收完了之后才能再次发送啊,接收的数据可能要分3-4次,能不能完全分开呢,不用考虑Receive()就可以send
jguon
2010-11-30
打赏
举报
回复
你也可以把socket保留,不关闭就可以一直通信了
jguon
2010-11-30
打赏
举报
回复
多开几个线程就可以了
jerry_zhang99
2010-11-30
打赏
举报
回复
问题就出在,一个clientSocket 必须在接收数据完了之后才能,才能再发送,而这里有不想 对何时接收数据完成的判断
Note-Station-to-markdown
这是
一个
跨平台脚本,可将 Synology Note Station 的笔记转换为 Markdown 文件。脚本使用 Python 编写,可在任何桌面平台上运行。 转换后您将获得: 1、以导出的笔记本命名的文件夹; 2、这些文件夹中以所有内联图片原位存储的 Markdown 语法纯文本文件笔记; 3、在笔记文本开头处分配标签和附件链接; 4、所有图片和附加文件都位于笔记本目录下的媒体子目录中。
区县-专精特新企业数量(2013-2025年).xlsx
详细介绍及样例数据:https://blog.csdn.net/li514006030/article/details/162965929
C#
111,129
社区成员
642,540
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章