当前位置:  技术问答>linux和unix

这个程序为什么会出现段错误呢?

    来源: 互联网  发布时间:2015-05-10

    本文导语:  [root@wengzhong linux]# ./server.exe 段错误 [root@wengzhong linux]# #include #include #include #include #include #include #include #include #include #include #define MYPORT 4000 #define BACKLOG 10 int main() { int sockfd,new_fd; struct sockaddr_in my_addr,their_addr;...

[root@wengzhong linux]# ./server.exe
段错误
[root@wengzhong linux]#

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MYPORT 4000
#define BACKLOG 10

int main()
{
int sockfd,new_fd;
struct sockaddr_in my_addr,their_addr;
int sin_size;
        //取得文件描述符
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
fprintf(stderr,"socket errorn");
}
        else
{ //初始话参数
my_addr.sin_family= AF_INET;
my_addr.sin_port  = htons(MYPORT);
my_addr.sin_addr.s_addr=inet_addr(INADDR_ANY);
bzero(&(my_addr.sin_zero),8);
                //帮定
if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1)
{
fprintf(stderr,"bind errorn");
exit(EXIT_FAILURE);
}
                //监听
if(listen(sockfd,BACKLOG)==-1)
{
fprintf(stderr,"listen errorn");
exit(EXIT_FAILURE);
}
while(1)
{
sin_size=sizeof(struct sockaddr_in);
if((new_fd=accept(sockfd,(struct sockaddr *)&their_addr,(socklen_t *)&sin_size))==-1)
{
fprintf(stderr,"accept error");
continue;
}
printf("server : got connection from %sn",inet_ntoa(their_addr.sin_addr));
if(!fork())
{
                                //如果是子程序发送
if(send(new_fd,"hello,word!n",15,0)==-1)
{
fprintf(stderr,"send errorn");
}
close(new_fd);
exit(0);
}
close(new_fd);
while(waitpid(-1,NULL,WNOHANG)>0);
}

}
}








|
my_addr.sin_addr.s_addr=inet_addr(INADDR_ANY);
使用错误
inet_addr(addr_str)
addr_str是非空IP地址字符串
INADDR_ANY == NULL所以段错误
你可以改成
my_addr.sin_addr.s_addr=inet_addr("0.0.0.0");

my_addr.sin_addr.s_addr= htonl(INADDR_ANY);

|
草看了一下
if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1)改为:
if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr_in)) == -1)

第三个参数为你要创建的套接口的大小而不是通用套接口大小。

另外:bzero(&(my_addr.sin_zero),8);这句最好改为
memset(&my_addr, 0, sizeof(my_addr))并放在设置地址和端口的前面,因为有的系统对可选参数sin_len的解释不同。

|
同意newalbert(bebe),
另将my_addr.sin_addr.s_addr=inet_addr(INADDR_ANY);
改为my_addr.sin_addr.s_addr=INADDR_ANY

|
我的程序也遇到过“段错误”。每次遇到“段错误”后,系统重启后就不能加载一些kernel模块,例如fat文件系统以及网卡驱动模块。不知道这是为什么?
并且每次遇到这个问题,我也不知道如何恢复系统,只能用最笨的办法:重装系统。当系统重启后不能加载一些kernel模块时,有没有什么好办法恢复系统?

    
 
 

您可能感兴趣的文章:

  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • Linux下怎样查c程序的错误号?程序出现错误:System error 32: Broken Pipe, 是什么原因?
  • windows server2008上PowerBuilder程序系统错误解决方法
  • 在inter版solaris 8上编socket程序,在read时遇到错误,错误号14,用strerror()看不到错误描述,请解决,多谢!
  • 解决服务器应用程序不可用,错误:0x80070005拒绝访问的错误
  • IIS未找到提供程序该程序可能未正确安装错误解决办法
  • java.exe-应用程序错误(程序一运行就报错)
  • 求救,程序运行时出现"闹钟"提示错误!!!!
  • 手动执行应用程序ok,但用crontab(在正确的用户名下)运行应用程序就报-12545(tns连接错误),怎么解决?
  • RedHat9.0:程序运行“段错误”,为什么连执行系统命令都出现“段错误”?
  • 错误跟踪程序 YouTrack
  • GDB调试程序报如下错误:
  • 为什么带s位的程序段错误产生不了core文件?
  • 用jbuilder开发的程序,其中用到了xylayout,将应用程序做成了jar文件,运行jar文件时,提示错误。请大家多帮忙
  • JAVA高手救命,如何对JSP程序进行错误控制!
  • 新手提问,应用程序运行:Permission denied错误
  • 执行一程序,向一个文本文件中写入数据,报文件大小超出限制错误!
  • 应用程序gnome-settings-daemon崩溃是什么错误?
  • VM下的linux Socket程序怎么客户机一连接就出现Bad address的错误?
  • mysql数据库的JDBC驱动程序为什么出现错误?
  • 急!!! 怎么通过core文件,查找程序中的错误!???
  • 请问:你们的程序都怎样关闭数据库?是在每次出现异常的时候吗?还是在一段程序结束后?
  • 怎样停止运行在面板上出现的小程序呀。
  • 从定时从A程序调用B程序(B程序运行一下就退出)多次后,出现僵尸进程?如何解决?
  • 通过JdbcOdbcDriver连接Access出现“未发现数据源名称并且未指定默认驱动程序”
  • 大家好,运行程序出现一个小问题
  • 急,在线等候,编译完运行程序出现找不到共享库的问题!
  • LINUX中执行一个程序的时候出现的错
  • 存在线程的程序中调用exec将出现什么问题?
  • 如何使java_swing图形程序运行时不出现dos窗口?
  • linux socket程序,出现closed by peer问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • 程序员的八种级别,你属于哪一级?
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 在docker容器中通过apt-get安装新的程序
  • Web服务器/前端 iis7站长之家
  • linux下通过crond实现自动执行程序
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径
  • http协议介绍,文件上传分析及程序举例
  • 为什么linux下的C++程序这么少见? 请问那里有linux下的C++程序?什么类型的程序都可以.
  • 程序员赚钱致富的6种方法
  • 我写了个linux下的网络程序,程序在多个电脑间通信,但是我没有多个电脑,怎么调试这样的程序啊?
  • HASH查找的程序实现及性能分析
  • 在java控制台程序中,可以用System.exit(0);使用一个程序终止,那么在servlet中如何使一个servlet程序终止呢?
  • 程序员为了健康必看!早晨空腹喝水,是对还是错?
  • 程序调用脚本,脚本启动另一个程序,如何让原始程序彻底释放资源?
  • 如何使用linux下gdb来调试python程序
  • python计算程序开始到程序结束的运行时间和程序运行的CPU时间
  • 42岁程序员,今天我失业了,怎么办?
  • linux下,一个程序如何向另一个程序发送消息,另一个程序如何接收


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3