社区
Linux/Unix社区
帖子详情
SOCKET 长连接
netreptile
2007-06-30 11:38:08
是否能给一个SOCKET长连接,客户端异常退出,服务器重启并在accept阻塞的列子呢?
...全文
163
9
打赏
收藏
SOCKET 长连接
是否能给一个SOCKET长连接,客户端异常退出,服务器重启并在accept阻塞的列子呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Avoid
2007-07-01
打赏
举报
回复
这账结的。。。
mymtom
2007-06-30
打赏
举报
回复
客户端断开,服务器recv会返回0,这时候你就要退出线程了。不然会是个死循环,不停的收到0
----------------
recv返回0,有点奇怪哦,read回返回0表示EOF,如果recv真返回0,只好退出了!
mymtom
2007-06-30
打赏
举报
回复
if(errno==EINTR)
{
continue;
}
改成下面试试:
if(errno==EINTR || errno == ECONNABORTED)
{
continue;
}
Avoid
2007-06-30
打赏
举报
回复
客户端断开,服务器recv会返回0,这时候你就要退出线程了。不然会是个死循环,不停的收到0
mymtom
2007-06-30
打赏
举报
回复
大致看了一下,步骤都是对的,现在出现有什么问题了?
netreptile
2007-06-30
打赏
举报
回复
这个是我的程序,帮我看看哪里有问题呢
netreptile
2007-06-30
打赏
举报
回复
int main(int argc,char ** argv)
{
int connfd;
pid_t childpid;
socklen_t clilen;
int read_count=0;
struct sockaddr_in cliaddr,servaddr;
static int process_count=0;
listenfd=socket(AF_INET,SOCK_STREAM,0);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
inet_pton(AF_INET,SERV_IP,&servaddr.sin_addr);
servaddr.sin_port=htons(SERV_PORT);
bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
if (listen(listenfd,LISTENQ)<0){
printf("%s\n","listen fail\n");
}else
printf("%s\n","listen ok\n");
/*安装信号处理器*/
if(signal(SIGINT,sig_int)==SIG_ERR)
{
printf("signal error\n");
return;
}
for(;;)
{
clilen=sizeof(cliaddr);
if((connfd=accept(listenfd,(struct sockaddr *)&cliaddr,&clilen))<0)
{
printf("accept fail\n");
if(errno==EINTR)
{
continue;
}
else
{
printf("%s\n","accept error\n");
exit(0);
}
}
if((childpid = fork()) == 0)
{
close(listenfd);
bank_process(connfd);
exit(0);
}
printf("childpid=%d\n",childpid);
close(connfd);
}
}
mymtom
2007-06-30
打赏
举报
回复
用fork多进程,何必重启服务器呢?
netreptile
2007-06-30
打赏
举报
回复
toAvoid(千金散去还复来) 我现在出现的问题就和你所说的问题一样,我改进了一下,while(waitpid(-1,NULL,WHONHANG)>0);
Java实现
Socket
长连接
和短连接
Java实现
Socket
长连接
和短连接,实现原理可参见个人博客
Android的
socket
长连接
(心跳检测)
这是Android的
socket
长连接
(心跳包),由于本人项目中需要用到
长连接
,所以先做了个demo,亲测是没有问题的。
C#高性能大容量
SOCKET
并发完成端口例子(有C#客户端)完整实例源码
例子主要包括
Socket
AsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,用于测试
Socket
AsyncEventArgs的性能和压力,最大连接数支持65535个
长连接
,最高命令交互速度...
C#高性能大容量
SOCKET
并发完成端口例子
例子主要包括
Socket
AsyncEventArgs通讯封装、服务端实现日志查看、SCOKET列表、上传、下载、远程文件流、吞吐量协议,用于测试
Socket
AsyncEventArgs的性能和压力,最大连接数支持65535个
长连接
,最高命令交互速度...
实现
socket
长连接
的三种方式
长连接
(
socket
)和短连接(ajax)。
长连接
不存在跨域问题。 实现
socket
的三种方式: net,node的内置模块
socket
.io 兼容性好,但是要先引入 web
socket
web
socket
是h5新增,低版本浏览器不兼容。
长连接
的使用...
Linux/Unix社区
23,128
社区成员
74,510
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章