ca888会员登录DELPHI 小结

2019-04-11 08:09栏目:程序人生

ca888会员登录 1

function DisConnectToServer: integer; stdcall;
函数表明:
断开平台的后台数据库连接

{=================================================================
  功  能: 再次来到本机的局域网ip地址
  参  数: 无
  返回值: 成功:  true, 并填充localip   失败:  false
  备 注:
  版 本:
     1.0  2002/10/02 21:05:00
=================================================================}
function getlocalip(var localip: string): boolean;
var
    hostent: phostent;
    ip: string;
    addr: pchar;
    buffer: array [0..63] of char;
    ginitdata: twsadata;
begin
  result := false;
  try
    wsastartup(2, ginitdata);
    gethostname(buffer, sizeof(buffer));
    hostent := gethostbyname(buffer);
    if hostent = nil then exit;
    addr := hostent^.h_addr_list^;
    ip := format('%d.%d.%d.%d', [byte(addr [0]),
          byte (addr [1]), byte (addr [2]), byte (addr [3])]);
    localip := ip;
    result := true;
  finally
    wsacleanup;
  end;
end;

{=================================================================
功 能: 检查测试互联网状态
参 数:
ipaddr: 被测试网络上主机的ip地址或名称,建议利用ip
返回值: 成功: true 失败: false;
备 注:
版 本:
1.0 2002/10/03 09:40:00
=================================================================}
function checknet(ipaddr: string): boolean;
type
pipoptioninformation = ^tipoptioninformation;
tipoptioninformation = packed record
ttl: byte; // time to live (used for traceroute)
tos: byte; // type of service (usually 0)
flags: byte; // ip header flags (usually 0)
optionssize: byte; // size of options data (usually 0, max 40)
optionsdata: pchar; // options data buffer
end;

function CreateIniDb: integer; stdcall;
函数表明:
开端化平台的后台数据库脚本

function GetSmsParams(var SendSmsCnt, HaveNotSendCnt, ReciveSmsCnt,
HaveNotReadSmsCnt: integer): integer; stdcall;
函数表明:
赢得平台的连带参数
参数表达:
SendSmsCnt 发件箱的总短信数
HaveNotSendCnt 未发的短信数量
ReciveSmsCnt 收件箱中已接到短信的数据
HaveNotReadSmsCnt 未读短信的数目

{=================================================================
  功  能: 重临网络中的共享财富
  参  数:
          ipaddr: 机器ip
          list: 须要填写的list
  返回值: 成功:  true,并填充list 失败: false;
  备 注:
     wnetopenenum function starts an enumeration of network
     resources or existing connections.
     wnetenumresource function continues a network-resource
     enumeration started by the wnetopenenum function.
  版 本:
     1.0  2002/10/03 07:30:00
=================================================================}
function getuserresource(ipaddr: string; var list: tstringlist): boolean;
type
  tnetresourcearray = ^tnetresource;//互联网类型的数组
var
  i: integer;
  buf: pointer;
  temp: tnetresourcearray;
  lphenum: thandle;
  netresource: tnetresource;
  count,bufsize,res: dword;
begin
  result := false;
  list.clear;
  if copy(ipaddr,0,2) <> '\' then
    ipaddr := '\' ipaddr;   //填充ip地址信息
  fillchar(netresource, sizeof(netresource), 0);//开首化网络层次音讯
  netresource.lpremotename := @ipaddr[1];//内定计算机名称
  //获取钦定计算机的网络能源句柄
  res := wnetopenenum( resource_globalnet, resourcetype_any,
                      resourceusage_connectable, @netresource,lphenum);
  if res <> no_error then exit;//执行破产
  while true do//列举钦定工作组的互连网财富
  begin
    count := $ffffffff;//不限资源数量
    bufsize := 81玖二;//缓冲区大小设置为8k
    getmem(buf, bufsize);//申请内部存款和储蓄器,用于获取工作组音信
    //获取钦定计算机的互连网能源名称
    res := wnetenumresource(lphenum, count, pointer(buf), bufsize);
    if res = error_no_more_items then break;//财富列举完毕
    if (res <> no_error) then exit;//执行破产
    temp := tnetresourcearray(buf);
    for i := 0 to count - 1 do
    begin
       //获取钦点总计机中的共享能源名称, 二表示删除"\",
       //如\192.168.0.1 => 192.168.0.1
       list.add(temp^.lpremotename 2);
       inc(temp);
    end;
  end;
  res := wnetcloseenum(lphenum);//关闭三次列举
  if res <> no_error then exit;//执行破产
  result := true;
  freemem(buf);
end;

三、socket函数
SOCKET socket(
int af,
int type,
int protocol
);
应 用程序调用socket函数来创设贰个力所能及进行互联网通讯的套接字。第三个参数钦命应用程序使用的通讯协议的协议族,对于TCP/IP协议族,该参数置 PF_INET;第二个参数内定要开创的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;第捌个参数钦赐应 用程序所利用的通讯协议。该函数即便调用成功就回去新制造的套接字的描述符,借使失利就赶回INVALID_SOCKET。套接字描述符是一个平头项目标值。种种进程的进度空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的附和关系。该表中有3个字段存放新制造的套接字的描述符, 另贰个字段存放套接字数据结构的地址,因而遵照套接字描述符就能够找到其相应的套接字数据结构。各类进度在协调的进程空间里都有贰个套接字描述符表不过套 接字数据结构都以在操作系统的基石缓冲里。上边是三个创建流套接字的例证:
struct protoent *ppe;
ppe=getprotobyname;
SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto);

荒唐说明
0 成功
-一 连接短信平台破产
-二 命令执行破产
-3 无可读短信

 

{=================================================================
  功  能: 列举工作组中享有的处理器
  参  数:
          list: 要求填写的list
  返回值: 成功:  true,并填充list 失败: false;
  备  注:
  版  本:
     1.0  2002/10/03 08:00:00
=================================================================}
function getusers(groupname: string; var list: tstringlist): boolean;
type
  tnetresourcearray = ^tnetresource;//网络类型的数组
var
  i: integer;
  buf: pointer;
  temp: tnetresourcearray;
  lphenum: thandle;
  netresource: tnetresource;
  count,bufsize,res: dword;
begin
  result := false;
  list.clear;
  fillchar(netresource, sizeof(netresource), 0);//早先化网络层次新闻
  netresource.lpremotename := @groupname[1];//内定工作组名称
  netresource.dwdisplaytype := resourcedisplaytype_server;//类型为服务器(工作组)
  netresource.dwusage := resourceusage_container;
  netresource.dwscope := resourcetype_disk;//列举文件财富新闻
  //获取钦定工作组的互连网能源句柄
  res := wnetopenenum( resource_globalnet, resourcetype_disk,
                        resourceusage_container, @netresource,lphenum);
  if res <> no_error then exit; //执行战败
  while true do//列举钦点工作组的网络财富
  begin
    count := $ffffffff;//不限资源数量
    bufsize := 81玖二;//缓冲区大小设置为八k
    getmem(buf, bufsize);//申请内部存款和储蓄器,用于获取工作组新闻
    //获取总计机名称
    res := wnetenumresource(lphenum, count, pointer(buf), bufsize);
    if res = error_no_more_items then break;//财富列举完成
    if (res <> no_error) then exit;//执行破产
    temp := tnetresourcearray(buf);
    for i := 0 to count - 壹 do//列举工作组的总结机名称
    begin
      //获取工作组的微处理器名称, 二意味着删除"\",如\wangfajun=>wangfajun
      list.add(temp^.lpremotename 2);
      inc(temp);
    end;
  end;
  res := wnetcloseenum(lphenum);//关闭一回列举
  if res <> no_error then exit;//执行破产
  result := true;
  freemem(buf);
end;

四、closesocket函数
int closesocket(
SOCKET s
);
closesocket 函数用来关闭贰个叙述符为s套接字。由于各类进程中都有1个套接字描述符表,表中的种种套接字描述符都对应了二个位于操作系统缓冲区中的套接字数据结构, 因而有不小可能率有多少个套接字描述符指向同三个套接字数据结构。套接字数据结构中尤其有2个字段存放该组织的被引用次数,即有多少个套接字描述符指向该组织。当 调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,借使为1,就表明唯有1个套接字描述符指向它,由此操作系统就先把s在 套接字描述符表中对应的那条表项清除,并且释放s对应的套接字数据结构;如若该字段大于一,那么操作系统仅仅清除s在套接字描述符表中的对应表项,并且把 s对应的套接字数据结构的引用次数减1。
closesocket函数倘若实行成功就再次回到0,不然再次回到SOCKET_ERROR。

function ConnectToServer(aServerName, aLogID, aPass: pchar): integer; stdcall;
函数表达:
老是平台的后台数据库
参数表达:
aServerName 平台的后台数据库所在的服务器名称
aLogID 登6数据库服务器所需的用户名
aPass 登陆数据库服务器所需的密码

function ConnectToServer(aServerName, aLogID, aPass: pchar): integer; stdcall;
函数说明:
接连平台的后台数据库
参数表达:
aServerName 平台的后台数据库所在的服务器名称
aLogID 登陆数据库服务器所需的用户名
aPass 登6数据库服务器所需的密码

备注:一时半刻目录的规定标准:
壹,要是有TMP环境变量则近年来目录为TMP钦定的目录
2,若是未有TMP环境变量而有TEMP环境变量,则为TEMP变量钦点的目录
3,若是TMP和TEMP都未曾概念,则取当前目录为近期目录

一、WSAStartup函数
int WSAStartup(
WORD wVersionRequested,
LPWSADATA lpWSAData
);
使 用Socket的先后在利用Socket从前务必调用WSAStartup函数。该函数的第壹个参数指明程序请求使用的Socket版本,在那之中高位字节指 明副版本、低位字节指明主版本;操作系统利用第四个参数再次回到请求的Socket的版本音信。当二个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。现在应用程序就足以调用所请求的Socket库中的别的Socket函数了。该函数执行成功后重临0。
例:借使1个先后要接纳贰.壹本子的Socket,那么程序代码如下
wVersionRequested = MAKEWORD;
err = WSAStartup( wVersionRequested, &wsaData );

function ReadASms(var aPhone, aContent, aSendDateTime: pchar): integer; stdcall;
函数表明:
从平台的后台数据库中读取一条未读短信
参数表明:
aPhone 发送短信的人
aContent 短信的始末
aSendDateTime 短信发送的光阴

function SendASms(aPhone, aContent, aremark: pchar): integer; stdcall;
函数表明:
写短信到平台的后台数据库
参数表明:
aPhone 接收短信的人
aContent 短信的内容
aremark 备注

暂且路径
有时候要求Windows的暂且路径来做备份等工作,那么快要领悟路径在哪,上边的次序帮你忙:
var aa:pchar;
begin
GetTemp帕特h(20,aa); file://重回路径名
edit1.text:=aa;
end;

行使GetFileVersionInfo 获得版本音信的例证
Samples Using GetFileVersionInfo?
回答1:
procedure GetBuildInfo(var V1, V2, V3, V4: Word);
var
VerInfoSize: DWORD;
VerInfo: Pointer;
VerValueSize: DWORD;
VerValue: PVSFixedFileInfo;
Dummy: DWORD;
begin
VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr, Dummy);
GetMem(VerInfo, VerInfoSize);
GetFileVersionInfo(PChar(ParamStr, 0, VerInfoSize, VerInfo);
VerQueryValue(VerInfo, '', Pointer, VerValueSize);
with VerValue^ do
begin
V1 := dwFileVersionMS shr 16;
V2 := dwFileVersionMS and $FFFF;
V3 := dwFileVersionLS shr 16;
V4 := dwFileVersionLS and $FFFF;
end;
FreeMem(VerInfo, VerInfoSize);
end;

此短信平台,帮忙法兰西共和国wavecom短信猫.有VB及DELPHI示例程序

function CreateIniDb: integer; stdcall;
ca888会员登录,函数表明:
初叶化平台的后台数据库脚本

//数据(S)-->>二进制(S)
//任何数据都以以2进制格局储存的! (转)
function conertde(s:string):string;
var
 i:integer;
begin
 for i:=1 to length(s) do
   result:=result inttohex(ord(s[i]),2);
end; 

// free those buffers
freemem; freemem; freemem;

function SendASms(aPhone, aContent, aremark: pchar): integer; stdcall;
函数表明:
写短信到平台的后台数据库
参数表明:
aPhone 接收短信的人
aContent 短信的内容
aremark 备注

function ReadASms(var aPhone, aContent, aSendDateTime: pchar): integer; stdcall;
函数表明:
从阳台的后台数据库中读取一条未读短信
参数表明:
aPhone 发送短信的人
aContent 短信的内容
aSendDateTime 短信发送的岁月

  //获得本机的局域网ip地址
  function getlocalip(var localip:string): boolean;
  //通过ip再次来到机器名
  function getnamebyipaddr(ipaddr: string; var macname: string): boolean ;
  //获取互连网中sqlserver列表
  function getsqlserverlist(var list: tstringlist): boolean;
  //获取网络中的全体网络项目
  function getnetlist(var list: tstringlist): boolean;
  //获取网络中的工作组
  function getgrouplist(var list: tstringlist): boolean;
  //获取工作组中有所电脑
  function getusers(groupname: string; var list: tstringlist): boolean;
  //获取网络中的能源
  function getuserresource(ipaddr: string; var list: tstringlist): boolean;
  //映射网络驱动器
  function netaddconnection(netpath: pchar; password: pchar;localpath: pchar): boolean;
  //检查评定互联网状态
  function checknet(ipaddr:string): boolean;
  //检查实验机器是还是不是登入网络
  function checkmacattachnet: boolean;

怎么赢得Windows的一时文件目录?
顺应版本:Delphi 三,2.0,1.0

 

ca888会员登录 2

  // free those buffers
  freemem(pipe); freemem(pdata); freemem(preqdata);

得到程序的路子
ExtractFileDir(Application.Exename);

 

此短信平台,支持法兰西wavecom短信猫.有VB及DELPHI示例程序

获得执行顺序的目录
  SysUtils 单元中有 ExtractFileDir 与 ExtractFilePath五个像样的函数, 用哪二个?未有太大的涉及。
  可是有以下的差距: ExtractFilePath 传回值的最後3个字元是反斜杠"/"。
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ExtractFileDir(Application.Exename));
// ie: c:temp
ShowMessage(ExtractFilePath(Application.Exename));
// ie: c:temp
end;
相同点: 倘若实施文书在根目录下(如:C:SAMPLE.EXE)的话, 两者的传回值相同, 且最终一个字符都以"/"。

{=================================================================
功 能: 列举工作组中具有的电脑
参 数:
list: 要求填写的list
返回值: 成功: true,并填充list 失败: false;
备 注:
版 本:
1.0 2002/10/03 08:00:00
=================================================================}
function getusers(groupname: string; var list: tstringlist): boolean;
type
tnetresourcearray = ^tnetresource;//互连网类型的数组
var
i: integer;
buf: pointer;
temp: tnetresourcearray;
lphenum: thandle;
netresource: tnetresource;
count,bufsize,res: dword;
begin
result := false;
list.clear;
fillchar(netresource, sizeof(netresource), 0);//起先化互连网层次新闻
netresource.lpremotename := @groupname[1];//内定工作组名称
netresource.dwdisplaytype := resourcedisplaytype_server;//类型为服务器
netresource.dwusage := resourceusage_container;
netresource.dwscope := resourcetype_disk;//列举文件财富音信
//获取钦点工作组的互联网能源句柄
res := wnetopenenum( resource_globalnet, resourcetype_disk,
resourceusage_container, @netresource,lphenum);
if res <> no_error then exit; //执行战败
while true do//列举钦赐工作组的互连网财富
begin
count := $ffffffff;//不限能源数量
bufsize := 81九二;//缓冲区大大小小设置为八k
getmem(buf, bufsize);//申请内部存款和储蓄器,用于获取工作组新闻
//获取总计机名称
res := wnetenumresource(lphenum, count, pointer, bufsize);
if res = error_no_more_items then break;//财富列举完结
if (res <> no_error) then exit;//执行破产
temp := tnetresourcearray;
for i := 0 to count - 1 do//列举工作组的电脑名称
begin
//获取工作组的微处理器名称, 2代表删除"\",如\wangfajun=>wangfajun
list.add(temp^.lpremotename 2);
inc;
end;
end;
res := wnetcloseenum;//关闭一次列举
if res <> no_error then exit;//执行破产
result := true;
freemem;
end;

function DisConnectToServer: integer; stdcall;
函数表明:
断开平台的后台数据库连接

错误表达
0 成功
-壹 连接短信平台破产
-二 命令执行破产
-3 无可读短信

六、recv函数
int recv(
SOCKET s,
char FAR *buf,
int len,
int flags
);
不 论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的率先个参数钦定接收端套接字描述符;第一个参数指喜宝(Nutrilon)(Aptamil)个缓冲区,该缓 冲区用来存放在recv函数接收到的数码;首个参数指明buf的尺寸;第三个参数一般置0。这里只描述同步Socket的recv函数的施行流程。当使用 程序调用recv函数时,recv先等待s的出殡和埋葬缓冲中的数据被协议传送实现,假诺协商在传送s的发送缓冲中的数据时出现互联网错误,那么recv函数重返SOCKET_ELX570RO汉兰达,假若s的出殡和埋葬缓冲中尚无多少依旧数额被协议成功发送完成后,recv先检查套接字s的接收缓冲区,若是s接收缓冲区中绝非数据 或然协议正在接收数据,那么recv就径直等候,只到协商把数据接受达成。当协议把数据接收实现,recv函数就把s的吸收接纳缓冲中的数据copy到buf 中(注意协议接收到的数额或然大于buf的长短,所以在那种情况下要调用四回recv函数才能把s的接收缓冲中的数据copy完。recv函数仅仅是 copy数据,真正的接收数据是琢磨来形成的),recv函数重回其实际copy的字节数。即便recv在copy时出错,那么它回到 SOCKET_ERubiconRORAV四;要是recv函数在守候协议接收数据时网络中断了,那么它再次来到0。
注意:在Unix系统下,假设recv函数在守候协议接收数据时互联网断开了,那么调用recv的经过会接受到二个SIGPIPE非确定性信号,进程对该非频域信号的暗中同意处理是经过终止。

六、recv函数
int recv(
SOCKET s,
char FAR *buf,
int len,
int flags
);
不 论是客户依然服务器应用程序都用recv函数从TCP连接的另1端接收数据。该函数的率先个参数钦定接收端套接字描述符;第贰个参数指雅培(Abbott)个缓冲区,该缓 冲区用来存放recv函数接收到的多少;第7个参数指明buf的尺寸;第多少个参数①般置0。那里只描述同步Socket的recv函数的实践流程。当使用 程序调用recv函数时,recv先等待s的出殡缓冲中的数据被协议传送完结,假诺协商在传送s的发送缓冲中的数据时出现网络错误,那么recv函数重临SOCKET_E大切诺基ROLacrosse,假使s的出殡和埋葬缓冲中绝非多少或然数额被协议成功发送实现后,recv先检查套接字s的接收缓冲区,假设s接收缓冲区中从不数据 或然协议正在接收数据,那么recv就径直守候,只到协和式飞机把数据接收完成。当协议把数据接受实现,recv函数就把s的收纳缓冲中的数据copy到buf 中(注意协议接收到的多寡只怕大于buf的长短,所以在那种场馆下要调用四回recv函数才能把s的吸收接纳缓冲中的数据copy完。recv函数仅仅是 copy数据,真正的接收数据是钻探来形成的),recv函数再次来到其实际copy的字节数。假诺recv在copy时出错,那么它回到 SOCKET_EEnclaveRO智跑;假设recv函数在守候协议接收数据时互连网中断了,那么它重临0。
小心:在Unix系统下,如果recv函数在等候协议接收数据时互联网断开了,那么调用recv的历程会收到到二个SIGPIPE非频域信号,进程对该随机信号的暗中同意处理是进度终止。

function GetSmsParams(var SendSmsCnt, HaveNotSendCnt, ReciveSmsCnt,
HaveNotReadSmsCnt: integer): integer; stdcall;
函数表明:
获得平台的连带参数
参数表明:
SendSmsCnt 发件箱的总短信数
HaveNotSendCnt 未发的短信数量
ReciveSmsCnt 收件箱中已收取短信的数量
HaveNotReadSmsCnt 未读短信的数码

 

九、accept函数
SOCKET accept(
SOCKET s,
struct sockaddr FAR *addr,
int FAR *addrlen
);
服 务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的多个客户请求,并且创立贰个新的套接字来与客户套接字创设连接 通道,要是连接成功,就回来新成立的套接字的描述符,以往与客户套接字交换数据的是新创造的套接字;借使败北就赶回INVALID_SOCKET。该函数 的首先个参数内定处于监听状态的流套接字;操作系统利用首个参数来回到连接客户的地方结构;操作系统利用第几个参数来回到地址结构addr的长度。下边是2个调用accept的例子:
struct sockaddr_in ServerSocketAddr;
int addrlen;
addrlen=sizeof(ServerSocketAddr);
ServerSocket=accept(ListenSocket,(struct sockaddr *)&ServerSocketAddr,&addrlen);

五、send函数
int send(
SOCKET s,
const char FAR *buf,
int len,
int flags
);
不 论是客户照旧服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序1般用send函数向服务器发送请求,而服务器则一般用send函 数来向客户程序发送应答。该函数的第三个参数钦赐发送端套接字描述符;第3个参数指明1(Wissu)个存放应用程序要发送数据的缓冲区;第二个参数指明实际要发送的数 据的字节数;第多个参数一般置0。那里只描述同步Socket的send函数的推行流程。当调用该函数时,send先相比较待发送数据的长短len和套接字 s的发送缓冲区的长短,即使len大于s的发送缓冲区的长度,该函数重返SOCKET_EBMWX五RO兰德汉兰达;即便len小于恐怕等于s的发送缓冲区的长度,那么 send先反省协议是还是不是正在发送s的出殡和埋葬缓冲中的数据,若是是就等候协议把数量发送完,借使协议还一向不起来发送s的出殡和埋葬缓冲中的数据大概s的出殡和埋葬缓冲中没有数据,那么send就相比s的发送缓冲区的剩余空间和len,如若len大于剩余空间大小send就径直等待协议把s的出殡和埋葬缓冲中的数据发送完,假使len小于剩余空间大小send就独自把buf中的数据copy到剩余空间里(注意并不是send把s的出殡和埋葬缓冲中的数据传到连接的另一端的,而是协议传 的,send仅仅是把buf中的数据copy到s的发送缓冲区的剩余空间里)。假如send函数copy数据成功,就回到实际copy的字节数,即使send在copy数据时现身谬误,那么send就回来SOCKET_E凯雷德RO凯雷德;就算send在等候协议传送数据时网络断开的话,那么send函数也重临SOCKET_EGL450ROEscort。要留心send函数把buf中的数据成功copy到s的殡葬缓冲的结余空间里后它就重返了,可是此时那么些数据并不一定立时被 传到再三再四的另①端。假设协商在此起彼伏的传递进程中冒出互连网错误的话,那么下三个Socket函数就会重返SOCKET_ETucsonROBMWX三。(每1个除send外的 Socket函数在履行的最初叶总要先等待套接字的出殡缓冲中的数据被协议传送实现才能再三再四,借使在守候时现身互联网错误,那么该Socket函数就回去 SOCKET_ERROR)
留意:在Unix系统下,假若send在等候协议传送数据时互联网断开的话,调用send的历程会吸收接纳到一个SIGPIPE能量信号,进度对该数字信号的私下认可处理是过程终止。

interface
const
  c_err_getlocalip       = '获取当地ip战败';
  c_err_getnamebyipaddr  = '获取主机名失败';
  c_err_getsqlserverlist = '获取sqlserver服务器失利';
  c_err_getuserresource  = '获取共享资退步';
  c_err_getgrouplist     = '获取具有工作组退步';
  c_err_getgroupusers    = '获取工作组中拥有电脑退步';
  c_err_getnetlist       = '获取具有网络项目失败';
  c_err_checknet         = '网络不通';
  c_err_checkattachnet   = '未登入网络';
  c_err_internetconnected ='未有上网';
 
  c_txt_checknetsuccess  = '网络畅通';
  c_txt_checkattachnetsuccess = '已登入网络';
  c_txt_internetconnected ='上网了';

观察文件是不是存在
FileExists(FileName:String):Boolean;

unit net;

// finally send the packet
fillchar(ipopt, sizeof, 0);
ipopt.ttl := 64;
npkts := icmpsendecho(hicmp, address, preqdata, size,
@ipopt, pipe, buffersize, timeout);
if npkts = 0 then result:=false;

{=================================================================
  功  能: 检查实验机器是不是登入互联网
  参  数: 无
  返回值: 成功:  true  失败:  false
  备 注:
  版 本:
     1.0  2002/10/03 09:55:00
=================================================================}
function checkmacattachnet: boolean;
begin
  result := false;
  if getsystemmetrics(sm_network) <> 0 then
    result := true;
end;

归来程序执行参数
  有关 Delphi 传入应用软件的命令列参数, 请参考以下的认证:
用ParamCount函数取得命令参数的个数:
呼唤 ParamStr, 传回执行档的档名
呼唤 ParamStr, 传回第n个参数的内容
procedure TForm1.FormCreate(Sender: TObject);
var
sFileName: string;
begin
if ParamCount > 0 then begin (* 有实施参数字传送入 *)
sFileName := ParamStr; (* 取得参数内容 *)
if FileExists(sFileName) then
Memo1.Lines.LoadFromFile(sFileName)
else
Application.MessageBox('找不到钦点的档案', '音讯', 4八);
end;
end;

// --------------------------------------------------------------
  icmpclosehandle(hicmp);
  freelibrary(hicmplib);
  // free winsock
  if wsacleanup <> 0 then result:=false;
end;

ticmpcreatefile = function: thandle; stdcall;
ticmpclosehandle = function(icmphandle: thandle): boolean; stdcall;
ticmpsendecho = function(
icmphandle: thandle;
destinationaddress: dword;
requestdata: pointer;
requestsize: word;
requestoptions: pipoptioninformation;
replybuffer: pointer;
replysize: dword;
timeout: dword
): dword; stdcall;

得到WINDOWS的SYSTEM路径:
   方法:
            var
                 MySysPath : PCHAR ;
            begin
                    GetMem(MySysPath,255);
                    GetSystemDirectory(MySysPath,255);
            end;
   注:MySysPath为SYSTEM路径

end.
//错误消息常量
unit head;

{=================================================================
  功  能: 通过ip再次来到机器名
  参  数:
          ipaddr: 想要得到名字的ip
  返回值: 成功:  机器名   失败:  ''
  备 注:
    inet_addr function converts a string containing an internet
    protocol dotted address into an in_addr.
  版 本:
    1.0  2002/10/02 22:09:00
=================================================================}
function getnamebyipaddr(ipaddr : string;var macname:string): boolean;
var
  sockaddrin: tsockaddrin;
  hostent: phostent;
  wsadata: twsadata;
begin
  result := false;
  if ipaddr = '' then exit;
  try
    wsastartup(2, wsadata);
    sockaddrin.sin_addr.s_addr := inet_addr(pchar(ipaddr));
    hostent := gethostbyaddr(@sockaddrin.sin_addr.s_addr, 4, af_inet);
    if hostent <> nil then
      macname := strpas(hostent^.h_name);
    result := true;
  finally
    wsacleanup;
  end;
end;

八、listen函数
int listen( SOCKET s, int backlog );
服务程序可以调用listen函数使其流套接字s处于监听状态。处于监听状态的流套接字s将爱慕三个客户连接请求队列,该队列最多容纳backlog个客户连接请求。假若该函数执行成功,则再次回到0;即使履行破产,则赶回SOCKET_ERROR。

版权声明:本文由ca888发布于程序人生,转载请注明出处:ca888会员登录DELPHI 小结