delphixe下socket API失效,该如何解决 将原delphi7项目升级后,引用了新的Winapi.WinSock,发现UDP的sendto等函数发送数据后,对方无法接受到数据,但函数返回值正常,请教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在XE下,注意Char和AnsiChar的区别你在D7下写的Char到XE下就变成了WideChar 这个不是问题,编译都可以通过,我测试了XE3和XE5均可编译成功,但对方全都收不到数据,同样的测试代码delphi7下就可以正常运行,这是为什么呢,请高手赐教 发送数据函数代码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; 没用过xe 听说了解过xe下 也许要强调ARemoteIP: string改ansistring吧 你后面都有inet_addr(pansichar(ARemoteIP)); 请教高手,确定memo当前光标位置与选定字符的问题 SQL Server服务帐户选择不对而使天心ERP死机?? 【升星了】老规矩,放分!!! 我是菜鸟我要问! 300分求解个问题!解决后立马给分!(说到做到!) 只有60分了,简单问题 怎样获得Dialog中跳出选择文件的框后,如果按了取消键的信息 如何用图片做窗体形状?? 如何让程序在17寸的显示器上或在15寸的显示器上运行,显示效果都一样! 我认为挺难的两个问题 编好的程序在别人没装delphi和SQLSERVER数据库的电脑上没法运行!!! SQL问题
你在D7下写的Char到XE下就变成了WideChar
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;
xe下 也许要强调ARemoteIP: string改ansistring吧
你后面都有inet_addr(pansichar(ARemoteIP));