| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 399 人关注过本帖
标题:UDP 数据接收只接收1024,如何不开辟内存空间完整接收?
只看楼主 加入收藏
ljb8864
Rank: 2
等 级:论坛游民
帖 子:171
专家分:14
注 册:2023-6-4
结帖率:2.78%
收藏
已结贴  问题点数:10 回复次数:6 
UDP 数据接收只接收1024,如何不开辟内存空间完整接收?
UDP 数据接收只接收1024,如何不开辟内存空间完整接收?
搜索更多相关主题的帖子: 内存 接收 数据 空间 UDP 
2023-08-27 09:23
ljb8864
Rank: 2
等 级:论坛游民
帖 子:171
专家分:14
注 册:2023-6-4
收藏
得分:0 
the datagram is too large to fit into the buffer and is truncated.
2023-08-27 10:32
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:10 
不是已经接收到了吗,接收缓冲可以定义足够大。
2023-08-27 10:59
ljb8864
Rank: 2
等 级:论坛游民
帖 子:171
专家分:14
注 册:2023-6-4
收藏
得分:0 
回复 3楼 吹水佬
LPARAMETERS bytestotal
ComArray(this.object,11)

Dimension lcBuffer[1] as Byte

this.object.GetData(@lcBuffer,17,bytesTotal)  这句出错

*!*    ?lcBuffer

thisform.edit1.Value=Strconv(lcBuffer,15)
2023-08-27 12:20
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
this.object.GetData函数原型或参数介绍一下
如果不是用vfp定义的函数,这样传入数组参数未必有效。
2023-08-28 06:58
ljb8864
Rank: 2
等 级:论坛游民
帖 子:171
专家分:14
注 册:2023-6-4
收藏
得分:0 
回复 5楼 吹水佬
是MSWINSOCK的函数
图片附件: 游客没有浏览图片的权限,请 登录注册


是不是要设置缓存大小?但设置不了,是不是下面API写不对

DECLARE LONG  setsockopt IN "Ws2_32" long s ,long level,long optname ,long optval ,long optlen  &&"wsock32.dll"
DECLARE LONG  getsockopt IN "Ws2_32" long s ,long level,long optname ,long @optval ,long optlen&&"wsock32.dll"
#define  SOL_SOCKET  65535
#define SO_REUSEADDR 0x0004
#define SO_REUSEPORT 15

getsockopt(Thisform.tcpClient.OBJECT.SocketHandle, SOL_SOCKET, SO_REUSEADDR, 1, 1)
setsockopt(Thisform.tcpClient.OBJECT.SocketHandle, SOL_SOCKET, SO_REUSEADDR, 1, 1)
C语言使用如下
*!*        int on = 1;
*!*        setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
为了解决Address in use C:\Windows\SysWOW64\mswinsck.ocx

#define SOL_SOCKET      1

#define SO_DEBUG        1
#define SO_REUSEADDR    2
#define SO_TYPE         3
#define SO_ERROR        4
#define SO_DONTROUTE    5
#define SO_BROADCAST    6
#define SO_SNDBUF       7
#define SO_RCVBUF       8
#define SO_SNDBUFFORCE  32
#define SO_RCVBUFFORCE  33
#define SO_KEEPALIVE    9
#define SO_OOBINLINE    10
#define SO_NO_CHECK     11
#define SO_PRIORITY     12
#define SO_LINGER       13
#define SO_BSDCOMPAT    14

buflen = 65536*10;
设置读缓存大小
setsockopt(m_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,4)
设置写缓存大小
setsockopt(m_sendUdpSock,SOL_SOCKET,SO_SNDBUF,&buflen,4)
getsockopt(g_sendUdpSock,SOL_SOCKET,SO_RCVBUF,&buflen,&getnumlen)



[此贴子已经被作者于2023-8-28 10:03编辑过]

2023-08-28 09:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:0 
没看明白到底是说哪句有问题
代码不完整,看不明。
2023-08-28 21:43
快速回复:UDP 数据接收只接收1024,如何不开辟内存空间完整接收?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025998 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved