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

一个一对一的聊天程序,客户端老连不上,大家帮我看看哪错了

    来源: 互联网  发布时间:2016-03-24

    本文导语:  服务端: #include  #include  #include  #include  #include  #include  #include  #include  #include  #define MAXDATASIZE 512 #define PORT 6666 #define STDIN 0 int main(void) {     int sockfd,client_fd;     int sin_size;     struct sockaddr_in my_addr...

服务端:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MAXDATASIZE 512
#define PORT 6666
#define STDIN 0

int main(void)
{
    int sockfd,client_fd;
    int sin_size;
    struct sockaddr_in my_addr,remote_addr;
    char buf[256], send_str[256];
    int ret,val,recvbytes;
    fd_set rfd_set,wfd_set,efd_set;
    struct timeval timeout;

    if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
        perror("socket failn");
        exit(1);
    }
    bzero(&my_addr,sizeof(struct sockaddr_in));
    my_addr.sin_family=AF_INET;
    my_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    my_addr.sin_port=htons(PORT);
    /*val=setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,(struct sockaddr *)&my_addr,sizeof(my_addr));
    if(val==-1)
    {
        perror("setsockopt failn");
        exit(1);
    }*/
    if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)
    {
        perror("bind failn");
        exit(1);
    }
    if(listen(sockfd,5)==-1)
    {
        perror("listen failn");
        exit(1);
    }

    sin_size=sizeof(remote_addr);
    printf("waiting to connect .... n");
    if((client_fd=accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size))==-1)
    {
        perror("accept failn");
        exit(1);
    }
    fcntl(client_fd,F_SETFD,O_NONBLOCK);

    while(1)
    {
        FD_ZERO(&wfd_set);
        FD_ZERO(&efd_set);
        FD_ZERO(&efd_set);
        FD_SET(STDIN,&rfd_set);
        FD_SET(client_fd,&rfd_set);
        FD_SET(client_fd,&wfd_set);
        FD_SET(client_fd,&efd_set);
        timeout.tv_sec=10;
        timeout.tv_usec=0;

        ret=select(client_fd+1,&rfd_set,&wfd_set,&efd_set,&timeout);
        if(ret==0)
        {
            continue;
        }

        if(ret

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 对象的一对一关联怎么表达?
  • Flask SQLAlchemy一对一,一对多的使用方法实践
  • EJB3.0开发之多对多和一对一


  • 站内导航:


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

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

    浙ICP备11055608号-3