游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2736|回复: 10

关于网络编程的问题,

[复制链接]

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2006-8-28 03:57:00 | 显示全部楼层 |阅读模式
既然调用send的时候也只是把应用程序里的数据复制到操作系统那排队发送,那么是否意味着应用程序这里不用实现一个等待发送数据的队列?
如果把操作系统的那段buf设置得足够大,那么大多数时候send都不会阻塞,都能把数据完全复制过去,这样应用程序就不需要再实现一层等待队列了岂不是很好?
[em24] [em24]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2006-8-28 09:12:00 | 显示全部楼层

Re:关于网络编程的问题,

当你往系统缓冲里拷贝的速度大于系统发送速度的话,总会溢出的,一旦溢出,发送的内容就丢失,而在上层做管理的话,可以避免这种信息丢失的情况。

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2006-8-28 13:26:00 | 显示全部楼层

Re:关于网络编程的问题,

问题是即使是自己有一层buf,当这个buf满了之后怎么办?

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2006-8-28 17:38:00 | 显示全部楼层

Re:关于网络编程的问题,

小小顶一下……

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2006-8-29 09:09:00 | 显示全部楼层

Re:关于网络编程的问题,

概念性错误。
epoll或者select的话,有一个叫epoll_out/fd_write的东西,把你的socket放到这个队列里,当操作系统缓冲满了,并再次可以使用的时候,这个东西就会触发。

主要的思想是通过这个机制配合上层的buffer来实现,一般的做法是上层有一个buffer,当buffer快满的时候象应用层抛warning,然后根据warning做一些处理,把一些频繁需要发送的消息比如说位置信息之类的发送频率降低。诸如此类的解决方法。

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2006-8-29 13:59:00 | 显示全部楼层

Re:关于网络编程的问题,

晕……每一种数据包都有其自己的作用,减小频率会不会带来很大问题……

我希望在上层buf满了之后,就把要发送的数据放到一个队列里……可这样就要多一次内存拷贝,因为本来可以直接把数据写到buf上,现在要先new一块内存然后把指针放到队列里……

其实即使在上层设置buf,当buf满的时候还是要减小发送的信息量,那么如果可以设置操作系统里的buf,把它设置得很大,并且在buf快满的时候减小要发送的信息量,这样是否就不需要在上次设置buf了?

2

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2006-8-29 14:28:00 | 显示全部楼层

Re:关于网络编程的问题,

所谓缓冲, 只能解决瞬间发送频率较大的情况, 而不能解决网络吞吐量. 所以, 如果你的缓冲区老是不够的话, 那么是不是考虑下增加硬件资源或者是对你的网络需求进行优化?

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2006-8-29 15:35:00 | 显示全部楼层

Re:关于网络编程的问题,

要这么说,buf不够就算是比较严重的运行时错误喽?对于buf不够的连接是否可以认为客户端的网络线路不足以与服务器正常通信?

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
 楼主| 发表于 2006-8-29 19:07:00 | 显示全部楼层

Re:关于网络编程的问题,

再小小顶一下……

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2006-8-29 19:14:00 | 显示全部楼层

Re:关于网络编程的问题,

对,属于严重错误,可以写入日志或者采取其他措施进行处理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 05:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表