社区
网络编程
帖子详情
当客户端socket关闭时,select模型的server端该如何完美的释放掉连接的socket?
guopo
2008-07-08 09:45:40
首先谢谢各位!
我是希望高人给我提供个服务器端的编程模型。
我的服务器端会接收多个客户端的连接,并接收客户端发来的数据。由于我客户端会频繁的连接和关闭,所以我想在客户端关闭之后,服务器端作相应的处理。我是在每个客户端连接后都加入到一个链表中,并开出一个线程用select来检测连接的socket可读性,如果可读,就接收客户端的数据。
...全文
782
11
打赏
收藏
当客户端socket关闭时,select模型的server端该如何完美的释放掉连接的socket?
首先谢谢各位! 我是希望高人给我提供个服务器端的编程模型。 我的服务器端会接收多个客户端的连接,并接收客户端发来的数据。由于我客户端会频繁的连接和关闭,所以我想在客户端关闭之后,服务器端作相应的处理。我是在每个客户端连接后都加入到一个链表中,并开出一个线程用select来检测连接的socket可读性,如果可读,就接收客户端的数据。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lbjfeng
2009-01-22
打赏
举报
回复
[Quote=引用 9 楼 cnzdgs 的回复:]
FD_ISSET( Socket, &fdRead )是检查Socket是否在fdRead中,与连接是否断开没有关系。
[/Quote]
请恕小弟直言,FD_ISSET应该是判定socket是否可读写吧?
guopo
2008-07-08
打赏
举报
回复
谢谢,我试过了,是这样的。
cnzdgs
2008-07-08
打赏
举报
回复
FD_ISSET( Socket, &fdRead )是检查Socket是否在fdRead中,与连接是否断开没有关系。
guopo
2008-07-08
打赏
举报
回复
cnzdgs: 那么 FD_ISSET( Socket, &fdRead ) 会返回什么?
IsItNothing
2008-07-08
打赏
举报
回复
同意6楼的,再select成功后,判断recv返回值.
cnzdgs
2008-07-08
打赏
举报
回复
如果对方closesocket,select会成功,但recv返回0。可以根据recv的返回值来判断。
IsItNothing
2008-07-08
打赏
举报
回复
如果请求量很大,可以考虑用io完成端口.
客户关闭socket后,服务端这边的select会返回一个错误代码,你可以此时调用closesocket,然后作清除链表的处理,并退出线程.
guanbenben
2008-07-08
打赏
举报
回复
正常关闭还是异常关闭?
这个可以放到协议栈处理
guopo
2008-07-08
打赏
举报
回复
我的意思是说客户端调用了closesocket,服务器端怎么知道客户端关闭了?
jwybobo2007
2008-07-08
打赏
举报
回复
搞不清楼主的意思,直接closesocket不就行了
cnzdgs
2008-07-08
打赏
举报
回复
closesocket就可以了。
Socket
通信Client/
Server
Socket
通信,C/S
模型
,
客户端
服务器 数据通信,服务器端使用
Select
进行处理,接收数据后发送到
客户端
,
客户端
接收到服务器的数据后发送到服务器
c语言
socket
之
select
模型
开发服务器与
客户端
。
c语言
socket
之
select
模型
开发服务器与
客户端
select
模型
和poll差不多(只是poll简化了
select
的一些参数,本质是没有什么区别的) 服务端: #include <sys/types.h> #include <sys/
socket
.h> #include <stdio.h> #include <netinet/in.h> #include <sys/time.h> #include <sys/ioctl.h.
Python网络编程(
socket
)
网络中进程之间如何通信,如我们每天打开浏览器浏览网页
时
,浏览器的进程怎么与web服务器通信的?答案就是
socket
.
socket
翻译为套接字,它本质...该课程包括OS
模型
,TCP/IP协议,
socket
函数等Python网络编程基础知识。
Linux下网络
socket
编程——实现服务器(
select
)与多个
客户端
通信
一、关于
socket
通信 服务器端工作流程: 调用
socket
() 函数创建套接字 用 bind() 函数将创建的套接字与服务端IP地址绑定 调用listen()函数监听
socket
() 函数创建的套接字,等待
客户端
连接
当
客户端
请求到来之后 调用 accept()函数接受
连接
请求,返回一个对应于此
连接
的新的套接字,做好通信准备 调用 write()/read() 函数和 send()/recv()函数进行数据的读写,通过 accept() 返回的套接字和
客户端
进行通信
关闭
socket
(c.
socket
server
select
模型
值得注意的地方
http://blog.csdn.net/smilestone_322/article/details/7743278 版权声明:本文为博主原创文章,未经博主允许不得转载。 1)多个
客户端
连接
socket
服务器,怎么区分是哪个
客户端
连接
的,换句话说,
socket
怎么和
客户端
的ip一一对应? SOCKADDR_IN clientAddr; int
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章