如何正确发送数据包到UDP服务器?我正在尝试,但它没有工作,我没有从服务器收到任何东西.
我需要的是发送一个数据包: int64|int|int
并从服务器接收数据包: int|int|int64
怎么做正确?谢谢.
type
Tconnecting = record
a: int64;
b: integer;
c: integer;
end;
Treply_connect = record
a: integer;
b: integer;
c: int64;
end;
var
udp: TIdUDPClient;
send_data: TIdBytes;
received_data: TIdBytes;
i: integer;
packet: Tconnecting;
reply_packet: Treply_connect;
begin
packet.a := 41727101980;
packet.b := 0;
packet.c := RandomRange(1, 9999999);
SetLength(send_data, sizeof(packet));
Move(packet, send_data[0], sizeof(packet));
udp := TIdUDPClient.Create(nil);
try
udp.Host := 'server.com';
udp.Port := 1234;
udp.SendBuffer(send_data);
SetLength(received_data, 0);
i := udp.ReceiveBuffer(received_data, 5000);
Memo1.Lines.Add('Data reiceived! Len:'+IntToStr(Length(received_data))+',data:|'+BytesToString(received_data, 0)+'|');
finally
FreeAndNil(udp);
end;
Run Code Online (Sandbox Code Playgroud) 我不知道问题是否符合我的要求,但是:
我在表格中有一组问题将按特定顺序询问客户,有时我们需要插入新问题,我们还需要向下或向上移动问题.
我创建了一个名为position的字段,还有一些按钮来增加和减少它的位置所以我可以使用a SELECT ... ORDER BY但它不是很好,因为有时候两个或多个问题得到相同的位置编号而MySQL会选择它们的顺序.
那么让这个完美运作的正确方法是什么?
注意:我不能使用索引来做到这一点.对某些人来说很明显,但对其他人来说,不是......
在Java中,我们可以做如下事情:
String output = "";
stop: {
// count 10 lines
for ( int row = 1; row <= 10; row++ ){
// count 5 columns
for ( int column = 1; column <= 5; column++ {
if ( row == 5 )
break stop;
output += "* ";
}
output += "\n";
}
output += "\nTerminated Ok.";
}
Run Code Online (Sandbox Code Playgroud)
结果是10行的打印,但结束于5:
* * * * *
* * * * *
* * * * *
* * * * * …Run Code Online (Sandbox Code Playgroud) 我有一个实体,调用Users了login,name和department作为存储在Users表中的字段.
我的Spring-Boot配置定义了为此应用程序中的用户提供系统管理员角色的部门.
关键问题是我希望登录end-point返回用户数据以及他/她是或不是系统管理员的附加信息.
我认为这些信息应该在User类中,但是我不希望这些信息与其他字段一起存储在数据库中,因为管理部门可能会更改,或者用户将我从一个部门更改为另一个部门而不管理系统.
(编辑)我将在用户请求login()时定义此IsManager字段:我将获取用户的department字段并检查其managerDepartment列表以将其设置为true ou false.
所以问题是将信息放在实体类中的非持久字段中(以及如何做)或者如果我可以在rest方法中更改ResponseEntity以添加其他信息(以及如何),是否正确?
我正在尝试将GraphicEx组件库(用于PNG文件)从我的Delphi 2006移植到XE3(最后得到它),在纠正基本错误时,我遇到了这个错误:
"TPNGGraphic.IsChunk" invalid type cast
Run Code Online (Sandbox Code Playgroud)
在线:
function TPNGGraphic.IsChunk(ChunkType: TChunkType): Boolean;
// determines, independant of the cruxial 5ths bits in each "letter", whether the
// current chunk type in the header is the same as the given chunk type
const
Mask = not $20202020;
begin
Result := (Cardinal(FHeader.ChunkType) and Mask) = (Cardinal(ChunkType) and Mask); // <-- this line
end;
Run Code Online (Sandbox Code Playgroud)
有谁知道我该怎么做才能纠正它?
我很久以前的这段代码应该返回一个字符串列表,每台计算机连接到我的Windows,workgroup但是当我测试时,我只得到自己的计算机,但我有三台连接相同workgroup名称的计算机并出现在我的Windows中Explorer网络列表.
可能有什么不对?还有另一种方法吗?
function FindAllComputers(Workgroup: string; WithIP: Boolean): TStringList;
var
EnumHandle : THandle;
WorkgroupRS : TNetResource;
Buf : Array[1..500] of TNetResource;
BufSize : cardinal;
Entries : cardinal;
Res : Integer;
Computers : Tstringlist;
Limit, I: Integer;
begin
Limit := 0;
Workgroup := Workgroup + #0;
FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
With WorkgroupRS do
begin
dwScope := 2;
dwType := 3;
dwDisplayType := 1;
dwUsage := 2;
lpRemoteName := @Workgroup[1];
end;
WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0,
@WorkgroupRS, EnumHandle);
Computers := TStringList.Create; …Run Code Online (Sandbox Code Playgroud) 历史
我建立一个Windows Service作为我的一部分Platform Application来处理更新和服务器的功能,因此它可以被安装在机器比在不同的Client Application安装.它使用UDP发送和接收广播消息,并使用TCP来处理更敏感和最重要的消息.
目的
我希望最终用户可以轻松安装我的应用程序,只需复制计算机中的可执行文件并执行它们即可.主应用程序应验证用户是否为管理员,创建配置文件,然后安装Windows服务并运行它,因此当非管理用户登录时,他们不会从我的应用程序收到有关管理权限的任何错误.目标是在不需要现有技术人员的情况下进行大多数配置,因为数据库将是远程的.
问题
我的服务正在使用命令正常安装,MyService.exe /install但它没有自动启动.启动它的唯一方法是继续Control Panel > Admin Tools > Services手动操作.我尝试net start MyService通过我的应用程序调用,但我收到invalid service name了shell.我tryied了executable name,该display name和object name服务,但没有一次成功.这是我的TService的目标:
object ServiceMainController: TServiceMainController
OldCreateOrder = False
OnCreate = ServiceCreate
DisplayName = 'PlatformUpdateService'
Interactive = True
AfterInstall = ServiceAfterInstall
AfterUninstall = ServiceAfterUninstall
OnShutdown = ServiceShutdown
OnStart = ServiceStart
OnStop = ServiceStop
Height = 210
Width = …Run Code Online (Sandbox Code Playgroud) 我知道很多软件都是由安装在一起的Windows服务更新的.我将该服务作为客户端应用程序的更新帮助程序和数据服务器.但我仍然坚持如何从这项服务控制我的客户端应用程序.
首先,我的服务将检查远程服务器上的更新,然后下载文件.
它将向客户广播新闻,询问用户是否要立即更新或下次执行.
在更新时,客户端应用程序无法删除它自己的可执行文件,因此,如果它要求服务器在它没有执行时执行它,那么它是有意义的,然后当完成删除和重命名文件时,它将重新执行客户端.
如果服务在会话0中,则无法将客户端重新执行到同一用户会话.
另一个可能的问题是当服务需要更新时.它可以通过客户端而不是自身更新来解决.
因此,在更新客户端和服务器的情况下,我是否需要创建第三个应用程序来完成这项工作.如果这第三个应用程序是一个控制台应用程序,从服务执行它是没有问题的,对吧?
如果有一个不包含第3个应用程序的解决方案,那将是最好的.
注意:
该服务不仅仅是一个更新服务,而是一个通知用户访问和权限的服务器.主客户端应用程序不会user information database直接访问.
我Luhn在Internet上获得此功能,当我为Windows32 VCL编译它时它是正确的.但是当我编译它以在Android应用程序中使用时,我得到了一个False而不是True我怀疑它是因为它正在转换为utf8期望ascii被转换的字节.
那么我该怎么做才能在Android上正常工作呢?
function Luhn(Code: string): Boolean;
var
i, sum: integer;
temp: byte;
begin
{ calcula o algorítimo luhn, usado no iccid }
sum := 0;
for i:= length(Code) downto 1 do
begin // Run the characters backwards
temp := byte(Code[i])-48; // Convert from ASCII to byte
if (length(Code)-i) mod 2 = 0
then sum := sum + temp // Odd characters just add
else if temp < 5
then …Run Code Online (Sandbox Code Playgroud) 我知道如果我想在string黑色空间中添加ASCII字符,例如,我需要做的就是添加一个调用,CHAR(32)并将空间添加到string.
但是如果我想把无限符号∞(U + 221E)怎么办呢?
如果我将它粘贴到像'infiniteis∞'这样的文字字符串中,那么Delphi想要将文件更改为UTF8.
考虑这个例子:
Memo1.Clear;
Memo1.Add(S);
Memo1.SaveToFile(F);
Run Code Online (Sandbox Code Playgroud)
如果它是在JavaScript中,我们可以这样做:
Memo1.Clear.Add(S).SaveToFile(F);
Run Code Online (Sandbox Code Playgroud)
我怎样才能编写自己的Delphi类来支持这样的链接方法调用?我希望能够编写这样的代码:
MyFileClass.Create('File.txt').OpenForWrite().Add('Test');
Run Code Online (Sandbox Code Playgroud) delphi ×10
delphi-xe3 ×4
java ×2
android ×1
auto-update ×1
graphicex ×1
image ×1
indy10 ×1
jpa ×1
mysql ×1
png ×1
spring-boot ×1
sql ×1
unicode ×1
windows-7 ×1