社区
C#
帖子详情
一个关于Socket的问题
jerry_zhang99
2010-11-30 02:27:00
现在我要做一个socket通讯的 client端。在client端发送指令之后,server端,可能要分几次返回信息,而且会包括错误处理。
于是我想这样,发client端的发送和接收数据分开,client端发送数据之后,可以任意接收数据,同时也可以发送数据,有这样实现的案例吗。
...全文
151
12
打赏
收藏
一个关于Socket的问题
现在我要做一个socket通讯的 client端。在client端发送指令之后,server端,可能要分几次返回信息,而且会包括错误处理。 于是我想这样,发client端的发送和接收数据分开,client端发送数据之后,可以任意接收数据,同时也可以发送数据,有这样实现的案例吗。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 必须在接收数据完了之后才能,才能再发送,而这里有不想 对何时接收数据完成的判断
Socket
编程例子
1. 创建
Socket
:在客户端,使用`
socket
()`函数创建
一个
Socket
实例,然后用`connect()`函数连接到服务器的指定端口。在服务器端,同样使用`
socket
()`函数创建
Socket
,但之后要调用`bind()`绑定监听的IP地址和端口,...
C#的
Socket
实现UDP协议通信
用户数据报协议(UDP)是互联网协议族中的
一个
成员,位于传输层,与TCP协议并列。其主要特点是无连接且不可靠的数据传输,这意味着UDP在发送数据时不会建立连接,也不会确认数据是否被接收方成功接收。这种特性使得...
Java实现
Socket
长连接和短连接
在短连接中,每个请求-响应对都建立
一个
新的
Socket
连接,处理完后立即关闭。这种模式的优点是资源利用率高,避免了长时间占用系统资源。但缺点是频繁的连接和断开会增加网络开销,对于高并发场景可能不是最优选择。 ...
socket
编程之实现
一个
简单的TCP通信
一、理解
socket
1、
socket
即为套接字,在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一的标识网络通讯中的
一个
进程,“IP地址+TCP或UDP端口号”就为
socket
。 2、在TCP协议中,建立连接的两个进程(客户端和服务器)...
Unity关于
Socket
重连
问题
Unity关于
Socket
重连
问题
问题
描述:客户端(Client)和服务端(Server)连接时第一次连接正常收发消息,当服务器断开再次上线时,客户端显示连接成功,但是无法互相通信! 思路:寻找是否有关掉客户端的
socket
,...
C#
111,092
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章