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

网路编程初写代码遇到的一些麻烦

    来源: 互联网  发布时间:2016-09-26

    本文导语:  //ser.c #define maxline 8192 int main(int argc,char**argv) { int socketfd,acceptfd; time_t nowtime; char buf[maxline]; struct sockaddr_in servaddr; printf("0"); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(12345); ...

//ser.c
#define maxline 8192

int main(int argc,char**argv)
{
int socketfd,acceptfd;
time_t nowtime;
char buf[maxline];
struct sockaddr_in servaddr;
printf("0");

bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(12345);
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

if((socketfd = socket(AF_INET,SOCK_STREAM,0)) == -1){
perror("socket");
exit(0);
}

if(bind(socketfd,(struct sockaddr*)&servaddr,sizeof(servaddr)) == -1){
perror("bind");
exit(0);
}

if(listen(socketfd,128) == -1){
perror("listen");
exit(0);
}
printf("1");

while(1){
if((acceptfd = accept(socketfd,(struct sockaddr*)NULL,NULL)) == -1){
perror("accept");
exit(0);
}
nowtime = time(NULL);
snprintf(buf,sizeof(buf),"%.24srn",ctime(&nowtime));
write(acceptfd,buf,strlen(buf));
printf("2");
close(acceptfd);
printf("3");
}
exit(0);
}
好心的各位大哥,本人刚接触网路编程,上面是服务端的代码,但为何打印不出写的printf呢?还有我将while(1)去掉,程序还是会停顿在哪个accept这儿,这是为何呢?求大家指点一二,感激不尽啊哈

|
1、把printf("0");改成printf("0n");注:所有的printf都加上换行符n,否则只是输出到缓存中,不会刷新到屏幕。
2、程序停在accept的地方是正常的,因为它在等待客户端的连接请求。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何获得linux的网路连接状态
  • 博客 iis7站长之家


  • 站内导航:


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

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

    浙ICP备11055608号-3