首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

linux下面基本的网络编程,收不到数据解决办法

2012-05-09 
linux下面基本的网络编程,收不到数据服务端程序为:C/C++ code#include stdlib.h#include stdio.h#incl

linux下面基本的网络编程,收不到数据
服务端程序为:

C/C++ code
#include <stdlib.h>#include <stdio.h>#include <sys/socket.h>#include <linux/in.h>int main(){    int svsk,clsk;    struct sockaddr_in myaddr;    char buff[8];    if((svsk=socket(AF_INET,SOCK_STREAM,0))<0){        printf("socket error\n");        exit(0);    }    bzero(&myaddr,sizeof(myaddr));    myaddr.sin_family=AF_INET;    myaddr.sin_port=htons(10086);    myaddr.sin_addr.s_addr=INADDR_ANY;    if(bind(svsk,(struct sockaddr *)&myaddr,sizeof(myaddr))<0){        printf("bind error\n");        exit(0);    }    if(listen(svsk,5)<0){        printf("listen error\n");        exit(0);    }    printf("Accepting connections ...\n");    while(1){        if(clsk=accept(svsk,NULL,NULL)<0){            printf("accept error\n");            exit(0);        }               printf("connected!\n");        //    if(send(clsk,"server",7,0)<0)        //        printf("write error\n");        if(read(clsk,buff,7)<0)            printf("read error\n");        puts(buff);        close(clsk);    }    close(svsk);    return 0;}



客户端为:
C/C++ code
#include <stdlib.h>#include <stdio.h>#include <sys/socket.h>#include <linux/in.h>int main(){    int clsk;    struct sockaddr_in svaddr;    char buff[8];    if((clsk=socket(AF_INET,SOCK_STREAM,0))<0){        printf("socket error\n");        exit(0);    }    bzero(&svaddr,sizeof(svaddr));    svaddr.sin_family=AF_INET;    svaddr.sin_port=htons(10086);    svaddr.sin_addr.s_addr=inet_addr("127.0.0.1");    if(connect(clsk,(struct sockaddr *)&svaddr,sizeof(svaddr))<0){        printf("connect error\n");        exit(0);    }    printf("connected!\n");    if(write(clsk,"client",7)<0)        printf("write error\n");//    if(recv(clsk,buff,7,0)<0)//        printf("read error\n");    close(clsk);    return 0;}


执行时双方都显示已连接,客户端显示发送成功,但是服务端没有任何输出,似乎是卡死在read那里了,怎么回事?

[解决办法]
if(clsk=accept(svsk,NULL,NULL)<0){

加括号

if((clsk=accept(svsk,NULL,NULL))<0){

热点排行