收发数据,用一个socket还是两个socket??

okmnji79513 2010-05-20 04:29:30
RT

例如:A机 相互 B机 收发UDP数据,
方式一:socket_X 在 线程M 中连续不断的发数据,socket_Y 在 线程N 中接收数据。(2个线程使用2个socket)
方式二:socket_X 在 线程M 中连续不断的发数据,并且 线程N 也使用 socket_X 来接收数据。(2个线程使用1个socket)

请问这两种方式有区别吗?

如果 要发送的数据 很多很多,要接收的数据也很多很多,两种方式在 效率上 会有差别吗?
...全文
550 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
china_ccboy 2010-06-08
  • 打赏
  • 举报
回复
个人看法:
你的写法和你占用的资源有关。至于和效率有没有,真的不好说。我没试过。
go_paradise 2010-06-08
  • 打赏
  • 举报
回复
支持用一个,足矣!
Wenxy1 2010-06-08
  • 打赏
  • 举报
回复
一般用一个,容易管理。
e513479333 2010-06-08
  • 打赏
  • 举报
回复
看数据量大小
howema 2010-06-01
  • 打赏
  • 举报
回复
跟socket个数无关了
tjusun007 2010-06-01
  • 打赏
  • 举报
回复
一个足矣
Vinc 2010-06-01
  • 打赏
  • 举报
回复
我选2个,因为这样可以分开管理2个缓冲区。
haowangyi 2010-05-31
  • 打赏
  • 举报
回复
叮叮叮啊,我也想知道
yaozhiyong110 2010-05-22
  • 打赏
  • 举报
回复
2个线程用2个socket 和2个线程用1个socket 效率上没区别
只是多维护一个socket占用系统资源而已(不过这个可以忽略不计)

只要你的socket连接是好的 那用A和用B 有区别吗? 至少从程序的层面上没区别
站在操作系统或底层实现的层面上也许有差别 不过你的1、2个线程 1、2个socket
即使在底层有区别 也体现不出来

有时间你可以好好研究下 我也想知道底层的区别
黑嘿 2010-05-22
  • 打赏
  • 举报
回复
up up
周药师 2010-05-22
  • 打赏
  • 举报
回复
效率高低不取决于用多少个Socket
而是看你这个业务中,每次发送接收的数据量大小、并发的数量大小、网络的稳定性,业务处理的复杂度
线程的使用等 很多因素,
要到达最高效率关键是看你是否根据需求进行合理设计
okmnji79513 2010-05-22
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhouzhangkui 的回复:]
看不懂你说的
[/Quote]
我的意思是:
假设情况:
A机 线程1 向B一直不停的发数据,A机 线程2 从B那里一直不停的接收数据 (使用UDP)。
那 线程1 和 线程2 是使用 1个socket效率高,还是使用 2个socket效率高???

或者说 只要在 1个线程 里使用 1个socket??(因为如上 假设情况 中 “2个线程-->2个socket通讯”、“2个线程-->1个socket通讯”、“1个线程-->1个socket通讯” 所表现出来的效率是完全一样的?没有任何差别??????)
shenyi0106 2010-05-21
  • 打赏
  • 举报
回复
一个socket
两个(多个)线程
okmnji79513 2010-05-21
  • 打赏
  • 举报
回复
UP 有人比较过 效率有差别不?

还是说 :socket只是用于描述IP地址和端口的 描述性的东西??只要 IP地址 和 端口 相同,1个socket 和 100个socket 没什么区别???????
周药师 2010-05-21
  • 打赏
  • 举报
回复
看不懂你说的
Hotthing 2010-05-21
  • 打赏
  • 举报
回复
一个控制命令通道,一个数据传送通道,这就是FTP的思想.
【天运子】 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 okmnji79513 的回复:]
引用 5 楼 yzcurry 的回复:
这个需要看你的实际情况
比如你就是双方数据的发送,数据之间没有关系,不需要判断是请求或等待回复的,可以用两个线程做
就是这个情况,我不需要等待回复,那 2个线程 用 2个socket 是不是比 2个线程 用 1个socket 效率更高???(假设需要连续不断的接收和发送数据)
[/Quote]我用2个临时的socket 在线程里面创建的,这样可以,至于效率没比过
okmnji79513 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yzcurry 的回复:]
这个需要看你的实际情况
比如你就是双方数据的发送,数据之间没有关系,不需要判断是请求或等待回复的,可以用两个线程做[/Quote]
就是这个情况,我不需要等待回复,那 2个线程 用 2个socket 是不是比 2个线程 用 1个socket 效率更高???(假设需要连续不断的接收和发送数据)
yzcurry 2010-05-21
  • 打赏
  • 举报
回复
这个需要看你的实际情况
比如你就是双方数据的发送,数据之间没有关系,不需要判断是请求或等待回复的,可以用两个线程做
如果你的双方数据需要做判断后再进行下一步的操作,哪只能用一个线程来做了,这样好控制
【天运子】 2010-05-21
  • 打赏
  • 举报
回复
。。。一个客户端 就一个套接字收发数据啊
加载更多回复(5)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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