delphi2007 中的idudpserver控件的监听事件和以前的不一样了。
不知道怎么读取数据。不知道这是delphi2007的bug还是故意这样子的。
下面是两个对照代码。
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
注意红色部分的类型。
不是stream了procedure TForm2.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);不得不承认我比较菜。
请高手帮忙。只要能正确收取数据就行了。
字符串数据。必须使用delphi2007。procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);//修改类型后编辑器能通过,但是程序没有效果。
不知道怎么读取数据。不知道这是delphi2007的bug还是故意这样子的。
下面是两个对照代码。
procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
注意红色部分的类型。
不是stream了procedure TForm2.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);不得不承认我比较菜。
请高手帮忙。只要能正确收取数据就行了。
字符串数据。必须使用delphi2007。procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);//修改类型后编辑器能通过,但是程序没有效果。
ABinding: TIdSocketHandle);procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);//修改类型后编辑器能通过,但是程序没有效果。
或是给一份delphi2007下能正常使用的udpserver聊天室源码 就是只有客户端没有服务端的那种。谢谢非常急 也非常郁闷。
Indy9:
UDPServer(Sender:TObject;AData:Thread;Abinding:tidsocketHandle);
indy10:
UDPRead(Sender: TObject; AData: TBytes;ABinding: TIdSocketHandle);
在读取数据的时候,返回的数据类型发生了变化。本人在网上查找到了很多的资料。都没得详细的解决办法。只是接收String的数据有一些方法提供。今天我发送了一条记录形式的数据接收成功;特此记下以便日后以供参考;
注意:可以在两个工程中分别放值一个tidudpserver控件,亦或在一个工程中放置两个tidudpserver控件亦可。
example:
Type
TComm = Record
msgType: integer;
Context: String[254];
end;
pComm = ^TComm;
TAForm = Class(Tform)
...
implementation
//发送
procedure TAform.btnSendClick(Sender:TObject);
Var
Comm: PComm;
Buf: TBytes;
begin
New(Comm);
Comm^.MsgType := 1;
Comm^.context := '中国人民共和国';
Buf := @Comm;
CopyMemory(@Buf,@Comm,SizeOf(Comm));
udpserver.SendBuffer('127.0.0.1',7001,Buf);
Dispose(Comm);
end;
//接收
Procedure TAForm.ServerUDPRead(Sender: TObject; AData: TBytes;
ABinding: TIdSocketHandle);
Var
comm: PComm;
begin
New(Comm);
CopyMemory(@comm,@AData,SizeOf(AData));
mmo1.Lines.Add(Comm^.context);
Dispose(comm);
end;
end.
你这代码我怎么编辑通不过呢!
给份这个的全部的完整UNIT好吗 谢谢!
RawToBytes
用这个来转换,,没必要那么麻烦。