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

帮我看看UDP的问题

    来源: 互联网  发布时间:2015-06-02

    本文导语:  下面代码是从widnows下移植过来的, windows下执行很好.但是linux下就是无法接收到数据?高手帮我 看看,有没有什么问题?  // 返回如果为0,表示没有数据 int CUdp::ReceiveData(char* buf, int* readLen, unsigned int* fromIp, int* fr...

下面代码是从widnows下移植过来的, windows下执行很好.但是linux下就是无法接收到数据?高手帮我 看看,有没有什么问题? 

// 返回如果为0,表示没有数据
int CUdp::ReceiveData(char* buf, int* readLen, unsigned int* fromIp, int* fromPort, int waitTime)
{

     FD_ZERO(fds);
     FD_SET(s,fds);
 timeOut.tv_sec = waitTime /1000;
 timeOut.tv_usec = waitTime % 1000;

     unsigned int addrLen = sizeof(remoteAddr);

     if (select(0,fds,NULL,NULL,&timeOut)>0 ) // 检查是否有数据
         *readLen =  recvfrom(s, buf, 2048, 0,(SOCKADDR *)&remoteAddr,&addrLen);
     else
         return 0;

 printf ("recv ok");

     if ( fromIp != NULL)
         *fromIp = ntohl(remoteAddr.sin_addr.s_addr);

     if ( fromPort != NULL)
         *fromPort = (int)ntohs(remoteAddr.sin_port);

     return 1;
}

|
/*--

Copyright (c) 2003 Shenzhen Surfilter Network Technology Co.Ltd

File Name:
bsocket.h
Version:
1.0
Abstract:
Declarations/definitions for BSD socket operation 
Author:
Gang He
Created on:
2003-11-12
Modified History:

Modified Person:

--*/

#ifndef _HEGANG_BSOCKET_H_
#define _HEGANG_BSOCKET_H_

#include 
#include 

#ifdef __cplusplus
extern "C" {
#endif


/* Define compatible data types */
typedef int SOCKET;
typedef unsigned short PORT;


#define INVALID_SOCKET 0
#define SOCKET_RECV_TIMEOUT -2
/* Define the maximum length the listen queue */ 
#define MAX_LISTEN_NUM 5


/*-
Name:
SOCKET CreateSock(int nDomain, int nType, int nProtocol)
Description:
Create a socket. 
Input Parameters:
nDomain: the protocol family
nType: socket type
nProtocol:  a particular protocol
Output Parameters:
nothing
Return Value:
a socket descriptor, otherwise -1 is returned if  an error occurred.
-*/
SOCKET CreateSock(int nDomain, int nType, int nProtocol);


/*-
Name:
int BindSock(SOCKET nSock, PORT wPort)
Description:
Bind a socket. 
Input Parameters:
nSock: socket descriptor
wPort: port to be binded
Output Parameters:
nothing
Return Value:
0, otherwise -1 is returned if  an error occurred.
-*/
int BindSock(SOCKET nSock, PORT wPort);


/*-
Name:
int ListenSock(SOCKET nSock, PORT wPort)
Description:
Bind and listen a socket. 
Input Parameters:
nSock: socket descriptor
wPort: port to be binded
Output Parameters:
nothing
Return Value:
0, otherwise -1 is returned if  an error occurred.
-*/
int ListenSock(SOCKET nSock, PORT wPort);


/*-
Name:
SOCKET AcceptSock(SOCKET nSock, char* szIpAddr)
Description:
Accept a socket. 
Input Parameters:
nSock: socket descriptor
Output Parameters:
szIpAddr: peer IP address, this buffer must be larger or equal to 16 bytes,
  otherwise, set szIpAddr NULL.
Return Value:
a socket descriptor, otherwise -1 is returned if  an error occurred.
-*/
SOCKET AcceptSock(SOCKET nSock, char* szIpAddr);


/*-
Name:
int ConnectSock(SOCKET nSock, char* szIpAddr, PORT wPort)
Description:
Connect a socket. 
Input Parameters:
nSock: socket descriptor
szIpAddr: peer IP address
wPort: peer port
Output Parameters:
nothing
Return Value:
0, otherwise -1 is returned if  an error occurred.
-*/
int ConnectSock(SOCKET nSock, const char* szIpAddr, PORT wPort);


/*-
Name:
int SendSock(SOCKET nSock, const void* pBuf, size_t nBufSize)
Description:
Transmit a message by socket. 
Input Parameters:
nSock: socket descriptor
pBuf: a message buffer
nBufSize: a message buffer size
Output Parameters:
nothing
Return Value:
the number of characters sent, otherwise -1 is returned if  an error occurred.
-*/
int SendSock(SOCKET nSock, const void* pBuf, size_t nBufSize);


/*-
Name:
int SendToSock(SOCKET nSock, const char* szIpAddr, PORT wPort, const void* pBuf, size_t nBufSize)
Description:
Transmit a message by socket. 
Input Parameters:
nSock: socket descriptor
szIpAddr: peer ip address
wPort: peer port
pBuf: a message buffer
nBufSize: a message buffer size
Output Parameters:
nothing
Return Value:
the number of characters sent, otherwise -1 is returned if  an error occurred.
-*/
int SendToSock(SOCKET nSock, const char* szIpAddr, PORT wPort, const void* pBuf, size_t nBufSize);


/*-
Name:
int RecvSock(SOCKET nSock, void* pBuf, size_t nBufSize, int nSec)
Description:
Receive a message from a socket 
Input Parameters:
nSock: socket descriptor
nSec: overtime seconds
Output Parameters:
pBuf: a message buffer
nBufSize: a message buffer size
Return Value:
the number of characters received, otherwise,
        -1 is returned if  an error occurred,
-2 is returned if timeout.
-*/
int RecvSock(SOCKET nSock, void* pBuf, size_t nBufSize, int nSec);


/*-
Name:
int RecvFromSock(SOCKET nSock, char* szIpAddr, PORT* pwPort, void* pBuf, size_t nBufSize)
Description:
Receive a message from a socket 
Input Parameters:
nSock: socket descriptor
Output Parameters:
szIpAddr: peer ip address
pwPort: peer port
pBuf: a message buffer
nBufSize: a message buffer size
Return Value:
the number of characters received, otherwise,
        -1 is returned if  an error occurred,
-*/
int RecvFromSock(SOCKET nSock, char* szIpAddr, PORT* pwPort, void* pBuf, size_t nBufSize);


/*-
Name:
void CloseSock(SOCKET* pSock)
Description:
Close a socket 
Input Parameters:
pSock: socket pointer
Output Parameters:
nothing
Return Value:
nothing
-*/
void CloseSock(SOCKET* pSock);


#ifdef __cplusplus
}
#endif

#endif

|
select(0,fds,NULL,NULL,&timeOut)
      ~~~~ s+1 不是 0 的了

|
if (select(0,fds,NULL,NULL,&timeOut)>0 ) // 检查是否有数据



0-------------------------absolutely not "0" here

    
 
 

您可能感兴趣的文章:

  • iptables规则问题,请大家帮忙看看怎么回事
  • 在编译内核时候出现问题,大家来帮忙看看是什么问题?怎么解决?
  • 关于全选的问题大家帮忙看看~
  • 大家去软件工程论坛里面去看看那,我发了700分的问题!!
  • redhat as3.0 java定时不能执行!请大家看看,问题在哪?
  • 虚心请教问题,帮我看看好吗?
  • 求人看看这个shell问题
  • 帮我看看我的sql语句写的有什么问题?
  • 关于arm交叉编译的问题,请帮忙看看问题出在什么地方?
  • 请帮我看看这个网络设置的问题
  • 大家帮我看看这个是什么问题
  • 大家能帮忙看看这个帖子的问题吗?
  • 看看这个代码问题在哪?
  • 帮忙看看下边代码有什么问题
  • 看看谁能解决这个问题?
  • 大家帮忙看看,是什么问题
  • 在浏览器里连接本机的菜鸟问题,帮忙看看!
  • 大侠帮忙看看,重定向问题
  • 关于用Jprint java打印的问题,请大家进来看看(路人甲、华仔哥)
  • 见不得人的问题,能帮我看看么
  • 看看UDP socket 端口 自动绑定的怪事?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 简单!看看这个方法!简单!看看这个方法!
  • linux高手看看
  • 好消息,近来看看......
  • 我想看看有关Linux和Unix的源码,有什么好的建议
  • 想看看linux的内核源代码!从哪里开始!给点建议!!
  • 我初学JAVA,大家愿意交朋友的进来看看!留QQ的给分啊!
  • jsp论坛,大家快去看看,解决树形目录http://52jsp.126.com
  • 各位大侠,小侠,快过来看看。
  • 看过操作系统设计与实现的进来看看
  • 请进来看看!!
  • 帮我看看下面这条语句??
  • 建议去这里看看,有好多基本的重要知识! 绝对值得一看!
  • 大家帮我看看,我好把贴子结了,里面有100分。。。。。。
  • 到 http://www.xbit2008.com 看看技术文章把! 我写的或从网上摘的!
  • 我刚申请的域名rootsafe.com大家看看怎么样? up有分!
  • 帮我看看是不是被黑了?
  • 我的Solaris启动不了了,请帮忙看看
  • 能不能帮我看看!!!!!
  • 请问哪位高手可以帮我远程看看Fedora的安装
  • 大神们帮我看看这个死机的原因


  • 站内导航:


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

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

    浙ICP备11055608号-3