服务器-c++ socket linux

问题描述

c++ socket linux

客户端向服务器发送数据。当客户端ctrl+c关闭时,服务器出现
客户端断开连接
*** glibc detected *** ./server: double free or corruption (fasttop): 0x09a2f028 ***
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(+0x6e311)[0x17e311]
/lib/tls/i686/cmov/libc.so.6(+0x6fb68)[0x17fb68]
/lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0x182c4d]
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0x989741]
./server[0x80497b8]
./server[0x80495ac]
/lib/tls/i686/cmov/libpthread.so.0(+0x596e)[0xab196e]
/lib/tls/i686/cmov/libc.so.6(clone+0x5e)[0x1e33ce]
======= Memory map: ========
00110000-00269000 r-xp 00000000 08:01 2097253 /lib/tls/i686/cmov/libc-2.11.1.so
00269000-0026b000 r--p 00159000 08:01 2097253 /lib/tls/i686/cmov/libc-2.11.1.so
0026b000-0026c000 rw-p 0015b000 08:01 2097253 /lib/tls/i686/cmov/libc-2.11.1.so
0026c000-0026f000 rw-p 00000000 00:00 0
003c1000-003e5000 r-xp 00000000 08:01 2097264 /lib/tls/i686/cmov/libm-2.11.1.so
003e5000-003e6000 r--p 00023000 08:01 2097264 /lib/tls/i686/cmov/libm-2.11.1.so
003e6000-003e7000 rw-p 00024000 08:01 2097264 /lib/tls/i686/cmov/libm-2.11.1.so
0062a000-00647000 r-xp 00000000 08:01 2097394 /lib/libgcc_s.so.1
00647000-00648000 r--p 0001c000 08:01 2097394 /lib/libgcc_s.so.1
00648000-00649000 rw-p 0001d000 08:01 2097394 /lib/libgcc_s.so.1
008ce000-009b7000 r-xp 00000000 08:01 132303 /usr/lib/libstdc++.so.6.0.13
009b7000-009bb000 r--p 000e9000 08:01 132303 /usr/lib/libstdc++.so.6.0.13
009bb000-009bc000 rw-p 000ed000 08:01 132303 /usr/lib/libstdc++.so.6.0.13
009bc000-009c3000 rw-p 00000000 00:00 0
00aac000-00ac1000 r-xp 00000000 08:01 2097280 /lib/tls/i686/cmov/libpthread-2.11.1.so
00ac1000-00ac2000 r--p 00014000 08:01 2097280 /lib/tls/i686/cmov/libpthread-2.11.1.so
00ac2000-00ac3000 rw-p 00015000 08:01 2097280 /lib/tls/i686/cmov/libpthread-2.11.1.so
00ac3000-00ac5000 rw-p 00000000 00:00 0
00cc6000-00cc7000 r-xp 00000000 00:00 0 [vdso]
00d30000-00d4b000 r-xp 00000000 08:01 2101162 /lib/ld-2.11.1.so
00d4b000-00d4c000 r--p 0001a000 08:01 2101162 /lib/ld-2.11.1.so
00d4c000-00d4d000 rw-p 0001b000 08:01 2101162 /lib/ld-2.11.1.so
08048000-0804a000 r-xp 00000000 08:01 1442605 /home/ubuntu/luotao/file/server/server
0804a000-0804b000 r--p 00001000 08:01 1442605 /home/ubuntu/luotao/file/server/server
0804b000-0804c000 rw-p 00002000 08:01 1442605 /home/ubuntu/luotao/file/server/server
09a2f000-09a50000 rw-p 00000000 00:00 0 [heap]
b6e00000-b6e21000 rw-p 00000000 00:00 0
b6e21000-b6f00000 ---p 00000000 00:00 0
b6fc9000-b6fca000 ---p 00000000 00:00 0
b6fca000-b77cd000 rw-p 00000000 00:00 0
b77dc000-b77df000 rw-p 00000000 00:00 0
bfafe000-bfb13000 rw-p 00000000 00:00 0 [stack]
已放弃

解决方案

有指针被反复释放了。结合gdb分析一下

./server[0x80497b8]
./server[0x80495ac]

解决方案二:

看下有没对read进行阻塞操作,客户端结束后,检测下服务端对应socket的标志位

解决方案三:

以前也遇到个类似的问题,不过解决了给忘了

时间: 2024-07-31 18:23:20

服务器-c++ socket linux的相关文章

httpd-阿里云服务器 阿里云linux一键安装web环境

问题描述 阿里云服务器 阿里云linux一键安装web环境 购买到阿里云服务器后,就按照官网提示到这个地址一键部署php环境http://market.aliyun.com/product/12-121590002-cmgj000262.html?spm=5176.7150518.1996836753.5.ZoE32o 云服务器安装好后,运行 /etc/init.d/httpd start出现如下错误 httpd: Syntax error on line 108 of /alidata/ser

通信-android 客户端socket连接服务器,socket何时close

问题描述 android 客户端socket连接服务器,socket何时close 假设socket连接好了,现在客户端向服务器发送完了数据,这个时候需要关闭socket吗?如果关闭后,某个时候又需要发送其他数据,再建立连接? 还是说建立通信协议,一次socket连接后一直保持通信状态,根据通信协议对不同的数据进行不同的处理,然后等客户端程序退出时再关闭socket. 解决方案 Android客户端通过Socket连接服务器Android客户端与java服务器端的Socket连接Socket服务

操作系统-为什么说Windows系统是单用户伪多用户系统,不适合做服务器,而Linux则是真正的多用户

问题描述 为什么说Windows系统是单用户伪多用户系统,不适合做服务器,而Linux则是真正的多用户 为什么说Windows系统是单用户伪多用户系统,不适合做服务器,而Linux则是真正的多用户,求大神解答操作系统底层相关概念,谢谢 解决方案 Windows9x确实是伪多用户的,从win2000开始,Windows就是真正的多用户系统了,,你看的资料得有多老.至于说多用户的好处,就是安全啊,将服务器程序运行在低权限的用户上,就算黑客黑进来了也没有权限,只能想办法找系统漏洞提权再破坏系统啊

服务器安全狗Linux版软件安装使用说明_Linux

服务器安全狗Linux版(SafeDog for Linux Server)是为Linux服务器开发的一款服务器管理软件,它集成了系统参数快速设置,系统运行状态直观展示,系统状态实时监控,常用服务.设备或软件的快速安装和配置等功能,帮助管理员快速直观地管理服务器.本软件还提供了纯字符界面下的界面交互接口和详细的操作指引,使得管理员对服务器的状态更加了解,管理和配置服务器也更加简单. 系统快速配置 1.网络接口配置       界面显示系统各个网卡的IP,子网掩码,MAC地址,IP设置方式,网卡激

Linux常用开发服务器的代码[Linux zhoulifa ]

经常用到的几个自定义函数:1.开启监听的函数 http://linux.chinaunix.net/bbs/viewthread.php?tid=786283&extra= /*************************关于本函数************************************  *function_name: OpenSCPServer  *参数说明:port整数型监听端口号,total整数型监听个数,sendbuflen整数型发送缓冲区大小  *        

关于用java搭建FTP服务器 下载远端Linux系统下文件的一些问题

问题描述 前提是这样的:我们每天都需要远端一台服务器上的数据,那台服务器姑且叫做B吧,B是Linux操作系统,而本地A是windows,现在用java在A上搭建一个FTP服务器,说白了也就是用java语言写一个FTP客户端,实现对远端数据的下载....这两天找找资料给弄出来了,因为windows对windows和windows对Linux还不一样,所以代码都点乱,不过功能可以实现平时工作需要的程序猿们可以拿去参考一下,,另外就是请各位批评指正,把代码优化改善一下子...谢了....代码:pack

服务器-C#Socket连接,第一次要很久

问题描述 C#Socket连接,第一次要很久 各位,我写了个 Socket 程序,服务端总是开启着,客户端偶尔连接.偶尔断开.现在如果客户端断开很久后再去连服务器,第一次要很久才能连接成功.大家有没有碰到这种情况? 麻烦各位大侠多指点. 解决方案 我也遇到了这样的问题,该如何解决

服务器-android socket 连不上 返回Null的问题

问题描述 android socket 连不上 返回Null的问题 用socket写了发消息客户端和服务器,在android studio的模拟器中运行的很正常,可一到手机上 就完全链接不上,为什么到手机上就不正常了呢?代码没有问题,在模拟器上很正常, 可以连接上也可以发送消息,一到手机上就不行-- 调试之后发现模拟器上socket是有效的,在手机上运行就变成了null,就是得不到Socket 求解答呀 解决方案 应该是因为网络问题,模拟器与socket客户端都同一个网络中是可以访问的,但是,s

请问服务器的socket接收该怎么写?

问题描述 比如那些网游,他们服务器需要同时接收很多链接,是用socket写的吗?如果是,那他 的listen监听的连接数肯定远远大于5啊?这是怎么弄的? 问题补充:dwangel 写道 解决方案 我只能 说你看的那个代码 或者 书有问题了.监听只有一个,最多只能说监听端口的接收到的接入链接缓存数有5个.监听到的接入请求,由监听代码负责accept后建立链接,链接跟监听没关系了.解决方案二:楼主对socket模型理解有问题.listen只是监听.收到接入请求,accept后才建立连接. 监听跟连接