使TCP服务器套接字类与德尔福Xe5机器人 [英] make tcp server socket class for android with Delphi Xe5

查看:452
本文介绍了使TCP服务器套接字类与德尔福Xe5机器人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

https://drive.google.com/:

项目上的文件文件/ D / 0BxODt2IJsmR8cUQ4cVltbWFzYUk /编辑?USP =共享
这里是我跑步codeS

  ...........
尝试
soket1:= TJServerSoket.JavaClass.init((8090));
//adres:=soket1.iNetAdres.ip;
memo1.Lines.Add('端口:'+ inttostr(soket1.Port));

  在E:异常做memo1.Lines.Add('端口Açılamadı:'+ E.Message);
结束;
尝试
  memo1.Lines.Add(IP:'+ jstringtostring((soket1.iNetAdres.Host)));

  在E:异常做memo1.Lines.Add(IP bigisialınamadı:'+ E.Message);结束;
.........................尝试
  soketC:= soket1.accept;
  //o1.writeChars(stringtojstring('merhaba'));
  memo1.Lines.Add('接受');

  在E:异常做memo1.Lines.Add('接受畑:'+ E.Message);结束;....................尝试
  //i1:=soketC.getInputStream;
  memo1.Lines.Add('I1:'+ inttostr(soketC.getInputStream.read));
  //memo1.Lines.Add('i1:'+ jstringtostring(soketC.getInputStream.readUTF));

  在E:异常做memo1.Lines.Add('I1畑:'+ E.Message);
结束;尝试
  //o1:=TJoutStream.JavaClass.init(soketC.getOutputStream);
  //o1.writeChars(stringtojstring('merhaba'));
  soketC.getOutputStream.write(65);
  memo1.Lines.Add('O1:merhaba');

  在E:异常做memo1.Lines.Add('O1畑:'+ E.Message);
结束;//soketC.getOutputStream.close;
//soketC.getInputStream.close;
//soketC.close;

请帮助...
我想要写/读(的InputStream / OutputStream中)到插座,但我得到的错误...

这里是我的坏套接字(socket'S)的API:

  .............
.............  //////////////////////////// SOKET ///////////////////// ////////
  [javaSignature('的Java / NET / InetAddress类')]
  JAdres =接口(JObject)
  ['{7A525333-38BC-4D2A-8160-D164D1CAA30E}']
    功能获取主机名:的jstring; CDECL;    物业主持人:阅读的jstring gethostname向;  结束;  JAdresClass =接口(JObjectClass)
  ['{B34C47C9-7FC8-4120-B087-60F517A9323D}']  结束;  TJAdres =类(TJavaGenericImport< JAdresClass,JAdres>)结束;
 ////////////////出缓冲器////////////////////
 ///     [javaSignature('的Java / IO / OutputStream中')]
  Jout =接口(jobject)
    ['{AC9EEC99-FF3A-46E4-AFC3-C4D3309D8C8E}']
    //程序绑定(localAddr:整数); CDECL; //超载;
    //属性port:整数读取的getLocalPort;
    写程序(缓冲:整数数组;偏移,数:整数); CDECL;过载;
    写程序(缓冲整数数组); CDECL;过载;
    写程序(缓冲整数); CDECL;过载; // TEK位YAZ
    //程序writeChars(STR:的jstring); CDECL;
    程序关闭; CDECL;
    程序平齐的cdecl;
  结束;
  JoutClass =接口(JObjectClass)
    ['{46FBBEEE-22C7-45EA-BED3-A41BED01E500}']
    程序的init(); CDECL; //德precated
    结束;  TJout =类(TJavaGenericImport< JoutClass,Jout>)结束; ////////////////////////////////////////////////    [javaSignature('的Java / IO / ObjectOutputStream的')]
  JoutStream =接口(jobject)
    ['{A6421CC3-B76C-4124-AB2E-AEE0C4749E71}']
    //程序绑定(localAddr:整数); CDECL; //超载;
    //属性port:整数读取的getLocalPort;
    写程序(缓冲:整数数组;偏移,数:整数); CDECL;过载;
    写程序(缓冲整数数组); CDECL;过载;
    写程序(缓冲整数); CDECL;过载; // TEK位YAZ
    程序writeChars(STR:的jstring); CDECL;
    程序关闭; CDECL;
    程序平齐的cdecl;
  结束;
  JoutStreamClass =接口(JObjectClass)
    ['{83D69F8F-8833-4EF5-B00D-2EA45F58AC46}']
    功能的init(OBJ:Jout):JoutStream; CDECL;超载; //德precated
    结束;  TJoutStream =类(TJavaGenericImport< JoutStreamClass,JoutStream>)结束;
  ///////////////////////输入缓冲区/////////////////       [javaSignature('的Java / IO / InputStream的')]
  金=接口(jobject)
   ['{42549EE4-B69C-4491-BEC1-5626C4E7D717}']
    //程序绑定(localAddr:整数); CDECL; //超载;
    //属性port:整数读取的getLocalPort;
    函数read(缓冲:jbyte数组;偏移,计数:整数):整数; CDECL;过载;
    函数read(缓冲:jbyte数组):整数; CDECL;过载;
    函数read():整数; CDECL;过载; // TEK位YAZ
    //功能的readUTF()的jstring; CDECL;
    程序关闭; CDECL;
    程序复位; CDECL;
  结束;
  JinClass =接口(JObjectClass)
    ['{AA965CF8-ED96-4EFE-B5F3-B02DAEDA8979}']
    功能的init():金; CDECL;超载; //德precated
    //程序的init(); CDECL;超载;
    结束;  TJin =类(TJavaGenericImport< JinClass,金>)结束;
  ////////////////////////////////////////////////// ///
     [javaSignature('的Java / IO / ObjectInputStream的')]
  JinStream =接口(jobject)
   ['{839ACAEC-229A-4261-88B4-136173B6FCBF}']
    //程序绑定(localAddr:整数); CDECL; //超载;
    //属性port:整数读取的getLocalPort;
    函数read(缓冲:jbyte数组;偏移,计数:整数):整数; CDECL;过载;
    函数read(缓冲:jbyte数组):整数; CDECL;过载;
    函数read():整数; CDECL;过载; // TEK位YAZ
    功能的readUTF()的jstring; CDECL;
    程序关闭; CDECL;
    程序复位; CDECL;
  结束;
  JinStreamClass =接口(JObjectClass)
    ['{27B4071A-5BC8-4594-A701-DBB92DBEE45A}']
    程序的init(); CDECL;超载;德precated;
    //程序的init(); CDECL;超载;
    结束;  TJinStream =类(TJavaGenericImport< JinStreamClass,JinStream>)结束;
 ////////////////客户端套接字////////////////////
  [javaSignature('的Java / NET /插座')]
  JSoket =接口(jobject)
   ['{3120C92A-DA6B-4584-B6FB-DEDEB36CA6FB}']
      程序关闭; CDECL;
      功能的getOutputStream:Jout; CDECL;
      功能的getInputStream:金; CDECL;
  结束;    JSoketClass =接口(JObjectClass)
    ['{F1C713D1-9A17-48EF-BD98-60FD859A2B3E}']
    功能INIT:JSoket; // CDECL;过载; //德precated
  结束;  TJSoket =类(TJavaGenericImport< JSoketClass,JSoket>)结束;///  [javaSignature('的Java / NET / ServerSocket的')]
  JServerSoket =接口(jobject)
    ['{FB896B05-0F70-4BF7-A69D-4655D173A303}']
    功能的getLocalPort:整数; CDECL; //超载;
    程序绑定(localAddr:整数); CDECL; //超载;
    程序关闭; CDECL; //超载;
    功能getInetAddress:JAdres; CDECL;
    函数accept()方法:JSoket; CDECL;    物业端口:整数读取的getLocalPort;
    物业iNetAdres:JAdres阅读getInetAddress;
    //功能的getLocalPort:整数; CDECL;
    //程序的ServerSocket(端口:整数); CDECL;  结束;    JServerSoketClass =接口(JObjectClass)
    ['{5D578C73-1315-4143-B14C-8E26BC1975BC}']
    功能的init(端口:整数):JServerSoket; // CDECL;过载; //德precated
  结束;  TJServerSoket =类(TJavaGenericImport< JServerSoketClass,JServerSoket>)结束;..........


解决方案

需要修复;

  [javaSignature('的Java / IO / OutputStream中')]
Jout =接口(jobject)
['{AC9EEC99-FF3A-46E4-AFC3-C4D3309D8C8E}']
写程序(缓冲:TJavaArray<字节取代;偏移,数:整数); CDECL;过载;
写程序(缓冲:TJavaArray<位>); CDECL;过载;
...........

写缓冲;

连接codeD(用于I S I Cöğ...)功能;

 函数stringtoJbyte(倚天:字符串):TJavaArray<字节取代;
VAR
  缓冲区:TJavaArray<字节取代;
  bufferByte:在tarray<字节取代;
  我,LEN:整数;
开始
  bufferByte:= TEncoding.UTF8.GetBytes(倚天);
  // LEN:= ByteLength(倚天);
  LEN:=长度(bufferByte);
  缓冲区:= TJavaArray<位> .Create(LEN + 1);
  对于i:= 0到LEN做
        buffer.Items第[i + 1]:= bufferByte [I];
  结果:=缓冲区;
结束;

调用api函数;

  soketC.getOutputStream.write(stringtoJbyte('kesinlikle yazar'));

project files on: https://drive.google.com/file/d/0BxODt2IJsmR8cUQ4cVltbWFzYUk/edit?usp=sharing here is the my running codes

    ...........
try
soket1:=TJServerSoket.JavaClass.init((8090));
//adres:=soket1.iNetAdres.ip;
memo1.Lines.Add('Port: '+inttostr(soket1.Port));
except
  on E:Exception do memo1.Lines.Add('Port Açılamadı: '+E.Message);
end;
try
  memo1.Lines.Add('ip: '+jstringtostring((soket1.iNetAdres.Host)));
except
  on E:Exception do memo1.Lines.Add('ip bigisi alınamadı: '+E.Message);

end;
.............

............

try
  soketC:=soket1.accept;
  //o1.writeChars(stringtojstring('merhaba'));
  memo1.Lines.Add('accept' );
except
  on E:Exception do memo1.Lines.Add('accept Hata: '+E.Message);

end;

....................

try


  //i1:=soketC.getInputStream;
  memo1.Lines.Add('i1: '+inttostr(soketC.getInputStream.read) );
  //memo1.Lines.Add('i1: '+jstringtostring(soketC.getInputStream.readUTF) );
except
  on E:Exception do memo1.Lines.Add('i1 Hata: '+E.Message);
end;

try
  //o1:=TJoutStream.JavaClass.init(soketC.getOutputStream);
  //o1.writeChars(stringtojstring('merhaba') );
  soketC.getOutputStream.write(65);
  memo1.Lines.Add('o1: merhaba' );
except
  on E:Exception do memo1.Lines.Add('o1 Hata: '+E.Message);
end;

//soketC.getOutputStream.close;
//soketC.getInputStream.close;
//soketC.close;

please help... i'm trying "write" / "read" (inputstream/outputstream) to socket but i get error...

here is the my bad socket (socket' "s" ) api:

.............
.............

  ////////////////////////////soket/////////////////////////////


  [javaSignature('java/net/InetAddress')]
  JAdres=interface(JObject)
  ['{7A525333-38BC-4D2A-8160-D164D1CAA30E}']
    function getHostName:Jstring;cdecl;

    property Host:Jstring read getHostName;

  end;

  JAdresClass=interface(JObjectClass)
  ['{B34C47C9-7FC8-4120-B087-60F517A9323D}']

  end;

  TJAdres = class(TJavaGenericImport<JAdresClass, JAdres>) end;


 ////////////////out buffer////////////////////
 ///

     [javaSignature('java/io/OutputStream')]
  Jout=interface(jobject)
    ['{AC9EEC99-FF3A-46E4-AFC3-C4D3309D8C8E}']
    //procedure bind(localAddr:integer);cdecl;//overload;
    //property Port: Integer read getLocalPort;
    procedure write(buffer:array of integer;offset,count:integer);cdecl;overload;
    procedure write(buffer:array of integer);cdecl;overload;
    procedure write(buffer:integer);cdecl;overload; //tek bit yaz
    //procedure writeChars(str:jstring);cdecl;
    procedure close;cdecl;
    procedure flush;cdecl;
  end;
  JoutClass = interface(JObjectClass)
    ['{46FBBEEE-22C7-45EA-BED3-A41BED01E500}']
    procedure init(); cdecl;//Deprecated
    end;

  TJout = class(TJavaGenericImport<JoutClass, Jout>) end;

 ////////////////////////////////////////////////

    [javaSignature('java/io/ObjectOutputStream')]
  JoutStream=interface(jobject)
    ['{A6421CC3-B76C-4124-AB2E-AEE0C4749E71}']
    //procedure bind(localAddr:integer);cdecl;//overload;
    //property Port: Integer read getLocalPort;
    procedure write(buffer:array of integer;offset,count:integer);cdecl;overload;
    procedure write(buffer:array of integer);cdecl;overload;
    procedure write(buffer:integer);cdecl;overload; //tek bit yaz
    procedure writeChars(str:jstring);cdecl;
    procedure close;cdecl;
    procedure flush;cdecl;
  end;
  JoutStreamClass = interface(JObjectClass)
    ['{83D69F8F-8833-4EF5-B00D-2EA45F58AC46}']
    function init(obj:Jout):JoutStream; cdecl;overload;//Deprecated
    end;

  TJoutStream = class(TJavaGenericImport<JoutStreamClass, JoutStream>) end;
  ///////////////////////input buffer/////////////////

       [javaSignature('java/io/InputStream')]
  Jin=interface(jobject)
   ['{42549EE4-B69C-4491-BEC1-5626C4E7D717}']
    //procedure bind(localAddr:integer);cdecl;//overload;
    //property Port: Integer read getLocalPort;
    function read(buffer:array of jbyte;offset,count:integer):integer;cdecl;overload;
    function read(buffer:array of jbyte):integer;cdecl;overload;
    function read():integer;cdecl;overload; //tek bit yaz
    //function readUTF():jstring;cdecl;
    procedure close;cdecl;
    procedure reset;cdecl;
  end;
  JinClass = interface(JObjectClass)
    ['{AA965CF8-ED96-4EFE-B5F3-B02DAEDA8979}']
    function init():Jin; cdecl;overload;//Deprecated
    //procedure init(); cdecl;overload;
    end;

  TJin = class(TJavaGenericImport<JinClass, Jin>) end;
  /////////////////////////////////////////////////////
     [javaSignature('java/io/ObjectInputStream')]
  JinStream=interface(jobject)
   ['{839ACAEC-229A-4261-88B4-136173B6FCBF}']
    //procedure bind(localAddr:integer);cdecl;//overload;
    //property Port: Integer read getLocalPort;
    function read(buffer:array of jbyte;offset,count:integer):integer;cdecl;overload;
    function read(buffer:array of jbyte):integer;cdecl;overload;
    function read():integer;cdecl;overload; //tek bit yaz
    function readUTF():jstring;cdecl;
    procedure close;cdecl;
    procedure reset;cdecl;
  end;
  JinStreamClass = interface(JObjectClass)
    ['{27B4071A-5BC8-4594-A701-DBB92DBEE45A}']
    procedure init(); cdecl;overload; Deprecated;
    //procedure init(); cdecl;overload;
    end;

  TJinStream = class(TJavaGenericImport<JinStreamClass, JinStream>) end;




 ////////////////client socket////////////////////
  [javaSignature('java/net/Socket')]
  JSoket=interface(jobject)
   ['{3120C92A-DA6B-4584-B6FB-DEDEB36CA6FB}']
      procedure close;cdecl;
      function getOutputStream:Jout;cdecl;
      function getInputStream:Jin;cdecl;


  end;

    JSoketClass = interface(JObjectClass)
    ['{F1C713D1-9A17-48EF-BD98-60FD859A2B3E}']
    function init:JSoket; //cdecl;overload;//Deprecated
  end;

  TJSoket = class(TJavaGenericImport<JSoketClass, JSoket>) end;

///

  [javaSignature('java/net/ServerSocket')]
  JServerSoket=interface(jobject)
    ['{FB896B05-0F70-4BF7-A69D-4655D173A303}']
    function getLocalPort:integer;cdecl;//overload;
    procedure bind(localAddr:integer);cdecl;//overload;
    procedure close;cdecl;//overload;
    function getInetAddress:JAdres;cdecl;
    function accept():JSoket;cdecl;

    property Port: Integer read getLocalPort;
    property iNetAdres: JAdres read getInetAddress;
    //function getLocalPort: Integer; cdecl;
    //procedure ServerSocket(port:integer);cdecl;

  end;

    JServerSoketClass = interface(JObjectClass)
    ['{5D578C73-1315-4143-B14C-8E26BC1975BC}']
    function init(port:integer):JServerSoket; //cdecl;overload;//Deprecated
  end;

  TJServerSoket = class(TJavaGenericImport<JServerSoketClass, JServerSoket>) end;

..........

解决方案

need fix;

[javaSignature('java/io/OutputStream')]
Jout=interface(jobject)
['{AC9EEC99-FF3A-46E4-AFC3-C4D3309D8C8E}']
procedure write(buffer:TJavaArray<byte>;offset,count:integer);cdecl;overload;
procedure write(buffer:TJavaArray<byte>);cdecl;overload;
...........

write buffer;

encoded (for ı ş İ ç ö ğ ...) function;

function stringtoJbyte(metin:String):TJavaArray<byte>;
var
  buffer: TJavaArray<byte>;
  bufferByte:TArray<byte>;
  i,len:integer;
begin
  bufferByte:=TEncoding.UTF8.GetBytes(metin);
  //len:=ByteLength(metin);
  len:=length(bufferByte);
  buffer := TJavaArray<byte>.Create(len+1);
  for i := 0 to len do
        buffer.Items[i+1]:=bufferByte[i] ;
  result:=buffer;
end;

call api func;

soketC.getOutputStream.write(stringtoJbyte('kesinlikle yazar'));

这篇关于使TCP服务器套接字类与德尔福Xe5机器人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆