标题:delphixe下socket API失效,该如何解决
只看楼主
ukton11123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-11-7
结帖率:0
已结贴  问题点数:20 回复次数:6 
delphixe下socket API失效,该如何解决
将原delphi7项目升级后,引用了新的Winapi.WinSock,发现UDP的sendto等函数发送数据后,对方无法接受到数据,但函数返回值正常,请教
搜索更多相关主题的帖子: 如何 项目 
2013-11-07 22:26
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:20 
看看

DO IT YOURSELF !
2013-11-08 09:19
ukton11123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-11-7
得分:0 
编译都可以通过,我测试了XE3和XE5均可编译成功,但对方全都收不到数据,同样的测试代码delphi7下就可以正常运行,这是为什么呢,请高手赐教
2013-11-08 09:31
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
不好意思  没用过xe3 和xe5

你可以用getlasterror看一下关键函数返回值  看是否调用成功

DO IT YOURSELF !
2013-11-08 09:33
ukton11123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-11-7
得分:0 
发送数据函数代码
function TMySocket.SendUDPData(ARemoteIP: string; ARemotePort: Word; var ABuffer;
  ABufferCount: integer): Boolean;
var
  FRemotAddr: TSockAddrIn;
begin
  Result := false;
  try

    FRemotAddr.SIn_Family := AF_INET;
    FRemotAddr.sin_addr.s_addr := inet_addr(pansichar(ARemoteIP));
    FRemotAddr.sin_port := htons(ARemotePort);
    if sendto(FMainSocket, ABuffer, ABufferCount, 0, FRemotAddr, SizeOf(FRemotAddr)) <> ABufferCount then
    begin

      Exit;
    end;
  except
  end;
  inc(SendCount);
  inc(SendSize, ABufferCount);

  Result := true;
end;
2013-11-08 09:35
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
if sendto(FMainSocket, ABuffer, ABufferCount, 0, FRemotAddr, SizeOf(FRemotAddr)) <> ABufferCount then
    begin

      Exit;
    end;
改一下 试试

m:=sendto(FMainSocket, ABuffer, ABufferCount, 0, FRemotAddr, SizeOf(FRemotAddr));
n:=getlasterror();
这里跟踪调试一下 看看n等于多少  百度一下 大概就知道错误在哪里了
初步怀疑这个sendto函数调用失败
if m<> ABufferCount then
    begin

      Exit;
    end;



DO IT YOURSELF !
2013-11-08 09:39
ukton11123
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-11-7
得分:0 
没有错误,返回0的
2013-11-08 09:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-423214-1-1.html




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

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