发送程序
procedure TForm1.btnSendClick(Sender: TObject);
var
txt:pchar;
begin
//valid
if Memo1.Text='' then
begin
StatusBar1.SimpleText:='Nothing to send';
exit;
end;
//infact only 1024 byte can send
GetMem(txt,Length(Memo1.Text)+1);
ZeroMemory(txt,Length(Memo1.Text)+1);
txt:=PChar(Memo1.Text);
//set ip info
NMUDP1.RemoteHost := Edit1.Text;
NMUDP1.RemotePort := StrToInt(Edit2.Text);
//send
NMUDP1.SendBuffer(txt^,Length(Memo1.Text));
end;接收的程序:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
TXT: PChar;
Count: Integer;
begin
StatusBar1.SimpleText:='Receiving data';
GetMem(txt,NUmberBytes+1);
ZeroMemory(txt,NumberBytes+1);
count:=numberbytes+1;
NMUDP1.ReadBuffer(TXT^, count);
Memo1.Lines.Add(TXT);
FreeMem(Txt);
StatusBar1.SimpleText:='data Received';
end;
运行的结果:
34535345(此行是发送时的数据)
3453?(此行是接收时的数据)
问题就是发送的数据与接收的数据不一样呀,不知道原因在哪里?
procedure TForm1.btnSendClick(Sender: TObject);
var
txt:pchar;
begin
//valid
if Memo1.Text='' then
begin
StatusBar1.SimpleText:='Nothing to send';
exit;
end;
//infact only 1024 byte can send
GetMem(txt,Length(Memo1.Text)+1);
ZeroMemory(txt,Length(Memo1.Text)+1);
txt:=PChar(Memo1.Text);
//set ip info
NMUDP1.RemoteHost := Edit1.Text;
NMUDP1.RemotePort := StrToInt(Edit2.Text);
//send
NMUDP1.SendBuffer(txt^,Length(Memo1.Text));
end;接收的程序:
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String; Port: Integer);
var
TXT: PChar;
Count: Integer;
begin
StatusBar1.SimpleText:='Receiving data';
GetMem(txt,NUmberBytes+1);
ZeroMemory(txt,NumberBytes+1);
count:=numberbytes+1;
NMUDP1.ReadBuffer(TXT^, count);
Memo1.Lines.Add(TXT);
FreeMem(Txt);
StatusBar1.SimpleText:='data Received';
end;
运行的结果:
34535345(此行是发送时的数据)
3453?(此行是接收时的数据)
问题就是发送的数据与接收的数据不一样呀,不知道原因在哪里?
解决方案 »
- ADODataSet调用oracle返回数据集的存储过程的问题
- 按1比1比例扫描的图片,如何将像索转为长度单位?
- 总觉得DateTimePicker输入日期并不方便,光标在 yyyy上输入时,原来整个yyyy就不见了?
- 关于TChart的一个问题,请大虾们帮忙,谢谢!
- 质量管理系统报价
- 如何让stringgrid指定的行显示与背景不同的颜色?高分回报!
- 用midas创建的多层应用系统,为何显示图片会出错?
- 请问9:58:30减去8:30:20是多少秒,用什么语句实现!
- 各位刚才我提的问题又遇到点困难,过来帮忙一下?
- 怎么可对某一字段自动求和,本人编写了一段代码,但只能手动求和,能否在onCalcFields事件中添加代码自动求和,十万火急!!!
- DELPHI基础问题,在线等待回答
- 如何将sql server中的几个表中的某些数据倒入到另个表中?用sql怎么写?select ...into?谢谢!!
好像有一个SendText 方法吧,
CoolSlob.NET 说:
如果你传输少量数据的话用SendText比较简单
Toad 说:
嗯,sendbuffer有1024字节的限制
Toad 说:
倒是有一个sendstream
Toad 说:
但SENDBUFFER为什么会丢失数据呀?
CoolSlob.NET 说:
应该是长度不够
Toad 说:
长度够呀,检查了它传过来数据的长度了
CoolSlob.NET 说:
在接收数据触发事件中,需要做缓冲。
CoolSlob.NET 说:
你发送的数据,有可能是分几次传送的,
Toad 说:
哦?
CoolSlob.NET 说:
明白啦?
Toad 说:
有一些明白了,但不知道如何解决呀
CoolSlob.NET 说:
做一个全局变量。
CoolSlob.NET 说:
每次接收的数据做+操作。
Toad 说:
想不想要分呀?去把那个贴结了吧
CoolSlob.NET 说:
当然要分,我现在用别人的同,,
CoolSlob.NET 说: