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

谁能帮忙看看,广播响应第一次执行总是超时

    来源: 互联网  发布时间:2016-12-23

    本文导语:  客户端发送广播,服务器响应,但是客户端第一次在接受响应的时候老是超时,不晓得怎么回事?每次执行./client 时候都是发5次广播,但是第一次执行的5次广播响应都是超时,从第二个5次才能收到响应数据,但是...

客户端发送广播,服务器响应,但是客户端第一次在接受响应的时候老是超时,不晓得怎么回事?每次执行./client 时候都是发5次广播,但是第一次执行的5次广播响应都是超时,从第二个5次才能收到响应数据,但是第一次的返回ip是很随机的一个ip?


|
我这边有一个运行成功了的例子,你可以参考下:


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

#define SERV_PORT 7838
#define SA struct sockaddr
#define LISTENQ 20
#define MAX_BUF_LEN 1000
int main ( int argc, char* argv[] )
{
    int     listenfd = 0, connfd = 0;
    socklen_t   sinsize = 0;
    struct sockaddr_in cliaddr, servaddr;
    char buf[MAX_BUF_LEN];
    int buflen = MAX_BUF_LEN;

    memset( buf, 0, sizeof(buf) );
    memset ( &servaddr, 0, sizeof ( servaddr ) );
    memset( &cliaddr, 0, sizeof( cliaddr ) );

    listenfd = socket ( AF_INET, SOCK_STREAM, 0 );

    if ( -1 == listenfd )
    {
        printf ( "Create socket error,reason is %sn", strerror ( errno ) );
        return -1;
    }

    servaddr.sin_family      = AF_INET;
    servaddr.sin_addr.s_addr = htonl ( INADDR_ANY );
    servaddr.sin_port        = htons ( SERV_PORT );

    if ( -1 == bind ( listenfd, ( SA * ) ( &servaddr ), sizeof ( SA ) ) )
    {
        printf ( "Bind listen socket error, reason is %sn", strerror ( errno ) );
        return -1;
    }

    if ( -1 == listen ( listenfd, LISTENQ ) )
    {
        printf ( "Listen connection error, reason is %sn", strerror ( errno ) );
        return -1;
    }

    sinsize = sizeof ( struct sockaddr_in );
    if ( -1 == ( connfd = accept ( listenfd, ( SA * ) & cliaddr, &sinsize ) ) )
    {
        printf ( "Accept connection socket error, reason is %sn", strerror ( errno ) );
        return -1;
    }

    while ( 1 )
    {
        int recvlen;
        int sendlen;
        if ( 1 > ( recvlen = recv ( connfd, buf, buflen, 0 ) ) )
        {
            printf ( "Connction socket recv data error ,reason is %s", strerror ( errno ) );
            continue;
        }
        else
        {
            printf ( "Server receive data:%s. Length is %d", buf, recvlen );
        }

        if ( -1 == ( sendlen = send ( connfd, buf, strlen ( buf ) + 1, 0 ) ) )
        {
            printf ( "Send data error, reason is %sn", strerror ( errno ) );
            continue;
        }
        else
        {
            printf ( "Server send data successfully, Length is %dn", sendlen );
        }
    }

    if ( -1 == close ( connfd ) )
    {
        printf ( "Close connection socket error, reason is %sn", strerror ( errno ) );
        return -1;
    }

    if ( -1 == close ( listenfd ) )
    {
        printf ( "Close listen socket error, reason is %sn", strerror ( errno ) );
        return -1;
    }

    return 0;
}



这是服务端的。

|
设置阻塞式看看。。
是不是用同一个套接字连续发送5次,然后再接收5次?
有可能在发送的时候接收包到了,然后丢掉了,其中我不知道socket里面的实现。

|
你是用recvfrom还是recv?
recvfrom获取的sockaddr不就是源包的ip!

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












  • 相关文章推荐
  • 如何关闭窗口时触发执行数据库操作?急!请帮忙! iis7站长之家
  • 编译执行spserver时候遇到的错误,帮忙看看
  • 如何关闭窗口时触发执行数据库操作?急!请帮忙!
  • unix系统中执行程序status=139是什么问题啊?请帮忙讲讲status啊!!!
  • 回调函数中的线程不能正确执行,大家帮忙看看吧,先谢谢了!
  • 请问在win2000,ibm http环境下怎么配置websphere才能执行*.jsp文件。请大家帮帮忙
  • 这是一段可以执行的awk程序,请问能否改进一下? 帮忙来看看,谢谢
  • 【求助】system()命令执行失败,请高手帮忙解决,谢谢!
  • 用jbuilder7编写成功运行正常的程序在用jdk中java命令执行出错,请帮忙!
  • 请大侠帮帮忙,我的makefile的内容在执行make的时候怎么不连续?
  • 帮忙看看, 这个脚本的SSH命令为何在循环中永远只执行一次?
  • 各位高手请帮忙,如果我在框架网页中弹出一个新的窗口,在新窗口中执行一定的操作后,怎样让框架网页自动刷新?
  • 一个添加50用户的shell程序,执行完毕后新建的账户登录密码错误。帮忙看下哪有问题,谢谢!
  • 麻烦帮忙看一下:这个shell脚本为什么执行不了?
  • 帮忙看看这个shell,为什么不能执行。
  • 只有一行代码的Makefile文件,在执行make命令时出错。请帮忙看看 ,谢谢
  • 急,求各位帮忙 为什么c可执行文件被kill 后,status 为113
  • 小弟写了一个很简单的动态库实例函数用来学习,但编译通过之后执行可执行文件报错。跪请高手帮忙!!!!
  • 各位大侠帮帮忙。请帮我看看这是怎么回事。为什么一执行就出现错误?到底错在那里?
  • 得到参数却无法继续执行,请大家帮帮忙了!
  • 努力努力再努力,帮忙帮忙来帮忙!
  • 在servlet中有一个关于单引号输出的问题,请大家帮忙,帮忙,帮帮忙!!
  • 小问题,你一定能够帮忙!——菜鸟请求帮忙!!
  • 帮忙帮忙如何设置变量pathclass
  • 没人帮忙吗?我想用JAVA编一个像WINDOW中的画图软件,现在出现了如下问题,请各位老哥老姐帮帮忙
  • 帮帮忙!SCO OpenServer 5.0.5 的root用户口令丢了,怎么找回来啊,帮帮忙!!!!!!
  • 我用smartupload组件遇到问题了,请帮忙!!
  • webmail问题,请高手帮忙!!!谁会使用IMP 3.0????!!!
  • 脚本问题,帮忙
  • 高手帮忙解释
  • 求教求教,shell问题...各位大哥,帮忙下


  • 站内导航:


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

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

    浙ICP备11055608号-3