当前位置: 技术问答>linux和unix
linux 多线程 出现段错误了 麻烦高手指点! 谢谢!!!
来源: 互联网 发布时间:2016-04-26
本文导语: //server.cpp #include using namespace std; int main(int argc, char *argv[]) { int sd, newSd, cliLen; socklen_t cli_len; struct sockaddr_in cliAddr, servAddr; char line[MAX_MSG]; pthread_t sub_thread; int errcode; thread_input threadinput; /* create soc...
//server.cpp
#include
using namespace std;
int main(int argc, char *argv[])
{
int sd, newSd, cliLen;
socklen_t cli_len;
struct sockaddr_in cliAddr, servAddr;
char line[MAX_MSG];
pthread_t sub_thread;
int errcode;
thread_input threadinput;
/* create socket */
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sdcliAddr.sin_addr), ntohs(input->cliAddr.sin_port), line);
if (a = '0'&&b= '1')//消息是clientrequest的情况
{
send(input->newSd, "the massage is client request", 16,0);
p_msg = &line[2];
CReq = (ClientReq *) p_msg;
printf("%s",CReq->CNonce);
}*/
send(input->newSd, "mac_grady", 16,0);
/* init line */
memset(input->line,0x0,MAX_MSG);
} /* while(read_line) */
//close(input->newSd);
}
//datatype.h
#ifndef DATATYPE_H
#define DATATYPE_H
#include
#include
#include
#include
#include
#include
#include /* close */
#include
#include
#include
#include
#include
#include
struct thread_input
{
int newSd;
char * line;
char * argv;
struct sockaddr_in cliAddr;
};
#endif
代码如上
只能连接成功一次 当client断开之后就提示 段错误!
头疼 不知道什么原因阿~~ 希望各位帮帮忙阿~
#include
using namespace std;
int main(int argc, char *argv[])
{
int sd, newSd, cliLen;
socklen_t cli_len;
struct sockaddr_in cliAddr, servAddr;
char line[MAX_MSG];
pthread_t sub_thread;
int errcode;
thread_input threadinput;
/* create socket */
sd = socket(AF_INET, SOCK_STREAM, 0);
if(sdcliAddr.sin_addr), ntohs(input->cliAddr.sin_port), line);
if (a = '0'&&b= '1')//消息是clientrequest的情况
{
send(input->newSd, "the massage is client request", 16,0);
p_msg = &line[2];
CReq = (ClientReq *) p_msg;
printf("%s",CReq->CNonce);
}*/
send(input->newSd, "mac_grady", 16,0);
/* init line */
memset(input->line,0x0,MAX_MSG);
} /* while(read_line) */
//close(input->newSd);
}
//datatype.h
#ifndef DATATYPE_H
#define DATATYPE_H
#include
#include
#include
#include
#include
#include
#include /* close */
#include
#include
#include
#include
#include
#include
struct thread_input
{
int newSd;
char * line;
char * argv;
struct sockaddr_in cliAddr;
};
#endif
代码如上
只能连接成功一次 当client断开之后就提示 段错误!
头疼 不知道什么原因阿~~ 希望各位帮帮忙阿~
|
pthread_t sub_thread; 你这里只保存了一个线程句柄。所以当创建第二个线程的时候,这个句柄被覆盖掉了。
你可以申请一个数组保存每个线程的句柄,这样就不会有问题了。
你可以申请一个数组保存每个线程的句柄,这样就不会有问题了。