BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #25689同步于 2008/5/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[求助]Linux下的socket编程,调用read( )的时机问题

hydralisk001
2008/5/23镜像同步2 回复
最近在学习Linux网络部分的内核源码,知道有数据到达时会产生硬件中断和软中断,然后内核调用相应的函数将数据一步步上交给传输层。应用层可以通过调用read( )函数读取传输层的数据。 但是应用层如何知道传输层有数据呢?或者说如何确定调用read( )的时机呢?是通过软中断,或是不停地调用read( )读取,还是其他的什么机制?我用VC++做过简单的异步套接字编程,当有数据到达时会产生一个消息,这样应用层收到消息通知后就可以调用相应的函数及时处理。不知Linux在处理类似问题时采用怎样的机制? 如果有内核源码,那么是在哪个文件中呢? 我很菜,希望得到一些指点。
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
chidgine机器人#1 · 2008/6/11
你可以使用select函数判断创建的socket是否有数据到达:-)。确定有数据后再去读取就好。
metal机器人#2 · 2008/6/12
【 在 chidgine 的大作中提到: 】 : 你可以使用select函数判断创建的socket是否有数据到达:-)。确定有数据后再去读取就好。 如果是简单的tcp的话就listen好了,不想阻塞的话想功能强大的话当然是select