社区
C#
帖子详情
一个关于Socket的问题
jerry_zhang99
2010-11-30 02:27:00
现在我要做一个socket通讯的 client端。在client端发送指令之后,server端,可能要分几次返回信息,而且会包括错误处理。
于是我想这样,发client端的发送和接收数据分开,client端发送数据之后,可以任意接收数据,同时也可以发送数据,有这样实现的案例吗。
...全文
157
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
编程例子
Socket
编程例子
C#的
Socket
实现UDP协议通信
C#的
Socket
实现UDP协议通信 CSharp
Java实现
Socket
长连接和短连接
Java实现
Socket
长连接和短连接,实现原理可参见个人博客
socket
编程之实现一个简单的TCP通信
一、理解
socket
1、
socket
即为套接字,在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一的标识网络通讯中的一个进程,“IP地址+TCP或UDP端口号”就为
socket
。 2、在TCP协议中,建立连接的两个进程(客户端和服务器)各自有一个
socket
来标识,则这两个
socket
组成的
socket
pair就唯一标识一个连接。 3、
socket
本身就有“插座”的意思,因此用来形容
Unity关于
Socket
重连
问题
Unity关于
Socket
重连
问题
问题
描述:客户端(Client)和服务端(Server)连接时第一次连接正常收发消息,当服务器断开再次上线时,客户端显示连接成功,但是无法互相通信! 思路:寻找是否有关掉客户端的
socket
,服务端下线是否关掉
socket
和释放所有相关联的资源。 因为第一次能通信后面重连无法通信,很有可能就是没有关掉第一次的
socket
对象,导致还是使用之前的连接。所以我们重新...
C#
111,112
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章