linux socket error
大致情况是:
我有个服务跑在LINUX下,有一个客户端不断地向它连接(速度大约是1s一次)。客户端连接成功之后,会立即发送数据给服务,服务将其断掉。但是一段时间后,客户端可以连接成功,但服务器端接收数据时总是错误,错误码是14,即EFAULT,经查相关资料,改错误是:参数中有一指针指向无法存取的内存空间。可是我的接收缓存指针没问题啊(因为每个请求过来,服务器端就建立一个新的对象,并将相关参数初始化,之后就是接收数据,所以断定应该没问题)。
这是怎么回事?请大侠指点。
贴代码比较好,这样很难弄清楚
PUI_Post_Parser::PUI_Post_Parser(ACE_Reactor *rt, const ACE_SOCK_Stream& sock, const ACE_INET_Addr &addr)
: PUI_Connection(rt, sock, addr)
, recv_buf_p_(recv_buf_)
, recv_ttl_len_(size_t(recv_buf_))
, recv_len_(0)
, close_flag_(true)
{
ACE_OS::memset(recv_buf_, 0, sizeof(recv_buf_));
CR_LOGDBG("PUI_Post_Parser [0x%08X] from [%s:%d] construct", this,
remote_addr().get_host_addr(), remote_addr().get_port_number());
}
PUI_Post_Parser::~PUI_Post_Parser(void)
{
if (close_flag_)
{
peer_.close();
CR_LOGINFO("the connection from [%s:%d] disconnected",
remote_addr().get_host_addr(), remote_addr().get_port_number());
}
if (reactor() != NULL)
reactor(NULL);
CR_LOGDBG("PUI_Post_Parser [0x%08X] from [%s:%d] destruct", this,
remote_addr().
相关问答:
写了个测试程序如下
struct hostent *hp;
char AlarmDevIP[20];
int x2;
hp = gethostbyname("www.google.com");
if (hp)
{
......
由于我才刚刚接触socket编程,自己写了一个简单程序,但就是在运行的时候出现段错误,无法解决,现在我把源代码贴出来,请各位大虾指正一下!谢谢!
#include<stdio.h>
#include<stdlib.h>
#include& ......
linux 下C编程 集成开发环境 用什么比较好
我初步选定 codeblock
呵呵 还有 在linux 写了一个打印中文的代码,而今天在windows 下查看那个代码 , 是乱码 而后想到先用 EditPlus先进行编辑 然后复制 ......
rt
使用I/O多路转接,select/poll/epoll。
首先,你所说的事件是什么?是signal还是condition
如果是signal,因为线程有别于进程,所以可以这样做。在线程内设置信号屏蔽位,将期望处理的信号位放
开,其余的bl ......
本来没问题的,但是现在不管用什么工具连数据库都很慢,因为后来服务器中多加了块网卡,而数据库监听设置的还是服务器名,我想会不会是这个问题,请教高手,并询问解决方法!谢谢
自己先顶下
把后加的网卡拿掉在 ......