* Examples for socket client/server moved here, adapted for possibility of timeout

git-svn-id: trunk@39539 -
This commit is contained in:
michael 2018-07-31 08:06:01 +00:00
parent c3d1e1559b
commit 4e94570ca3
5 changed files with 236 additions and 88 deletions

2
.gitattributes vendored
View File

@ -2495,6 +2495,8 @@ packages/fcl-net/examples/Makefile svneol=native#text/plain
packages/fcl-net/examples/Makefile.fpc svneol=native#text/plain
packages/fcl-net/examples/cnslookup.pp svneol=native#text/plain
packages/fcl-net/examples/ip6test.pp svneol=native#text/plain
packages/fcl-net/examples/isockcli.pp svneol=native#text/plain
packages/fcl-net/examples/isocksvr.pp svneol=native#text/plain
packages/fcl-net/examples/readme.txt svneol=native#text/plain
packages/fcl-net/examples/rpccli.pp svneol=native#text/plain
packages/fcl-net/examples/rpcserv.pp svneol=native#text/plain

View File

@ -1,11 +1,11 @@
#
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2017-09-21 rev 37286]
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2018-03-05 rev 38412]
#
default: all
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-netbsd m68k-amiga m68k-atari m68k-palmos m68k-macos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-aros x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin wasm-wasm sparc64-linux
MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-netbsd m68k-amiga m68k-atari m68k-palmos m68k-macos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-iphonesim x86_64-aros x86_64-dragonfly arm-linux arm-netbsd arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android arm-aros powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-embedded i8086-msdos i8086-win16 aarch64-linux aarch64-darwin wasm-wasm sparc64-linux
BSDs = freebsd netbsd openbsd darwin dragonfly
UNIXs = linux $(BSDs) solaris qnx haiku aix
LIMIT83fs = go32v2 os2 emx watcom msdos win16
LIMIT83fs = go32v2 os2 emx watcom msdos win16 atari
OSNeedsComspecToRunBatch = go32v2 watcom
FORCE:
.PHONY: FORCE
@ -332,256 +332,259 @@ FPCFPMAKE=$(FPC)
endif
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-go32v2)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-win32)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-os2)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-freebsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-beos)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-haiku)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-netbsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-solaris)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-netware)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-openbsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-wdosx)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-darwin)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-emx)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-watcom)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-netwlibc)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-wince)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-symbian)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-nativent)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-iphonesim)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-android)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-aros)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),m68k-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),m68k-netbsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),m68k-amiga)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),m68k-atari)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),m68k-palmos)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),m68k-macos)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),m68k-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-netbsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-amiga)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-macos)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-darwin)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-morphos)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-wii)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc-aix)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),sparc-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),sparc-netbsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),sparc-solaris)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),sparc-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-freebsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-netbsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-solaris)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-openbsd)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-darwin)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-win64)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-iphonesim)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-aros)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),x86_64-dragonfly)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-netbsd)
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-palmos)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-darwin)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-wince)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-gba)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-nds)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-symbian)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-android)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),arm-aros)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc64-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc64-darwin)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc64-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),powerpc64-aix)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),avr-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),armeb-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),armeb-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),mips-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),mipsel-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),mipsel-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),mipsel-android)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),jvm-java)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),jvm-android)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i8086-embedded)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i8086-msdos)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i8086-win16)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),aarch64-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),aarch64-darwin)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),wasm-wasm)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),sparc64-linux)
override TARGET_PROGRAMS+=rpcserv rpccli
override TARGET_PROGRAMS+=rpcserv rpccli isockcli isocksvr
endif
ifeq ($(FULL_TARGET),i386-linux)
override TARGET_UNITS+=svrclass svrclass_xmlrpc
@ -748,6 +751,9 @@ endif
ifeq ($(FULL_TARGET),arm-linux)
override TARGET_UNITS+=svrclass svrclass_xmlrpc
endif
ifeq ($(FULL_TARGET),arm-netbsd)
override TARGET_UNITS+=svrclass svrclass_xmlrpc
endif
ifeq ($(FULL_TARGET),arm-palmos)
override TARGET_UNITS+=svrclass svrclass_xmlrpc
endif
@ -1001,6 +1007,9 @@ endif
ifeq ($(FULL_TARGET),arm-linux)
override COMPILER_OPTIONS+=-S2h
endif
ifeq ($(FULL_TARGET),arm-netbsd)
override COMPILER_OPTIONS+=-S2h
endif
ifeq ($(FULL_TARGET),arm-palmos)
override COMPILER_OPTIONS+=-S2h
endif
@ -2358,6 +2367,17 @@ REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-NET=1
endif
ifeq ($(FULL_TARGET),arm-netbsd)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_PASZLIB=1
REQUIRE_PACKAGES_FCL-PROCESS=1
REQUIRE_PACKAGES_HASH=1
REQUIRE_PACKAGES_LIBTAR=1
REQUIRE_PACKAGES_FPMKUNIT=1
REQUIRE_PACKAGES_FCL-BASE=1
REQUIRE_PACKAGES_FCL-XML=1
REQUIRE_PACKAGES_FCL-NET=1
endif
ifeq ($(FULL_TARGET),arm-palmos)
REQUIRE_PACKAGES_RTL=1
REQUIRE_PACKAGES_PASZLIB=1

View File

@ -6,7 +6,7 @@
packages=fcl-base fcl-xml fcl-net
[target]
programs=rpcserv rpccli
programs=rpcserv rpccli isockcli isocksvr
units=svrclass svrclass_xmlrpc
[compiler]

View File

@ -0,0 +1,45 @@
Program Client;
{
This file is part of the Free Component Library (FCL)
Copyright (c) 1999-2000 by the Free Pascal development team
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
{
TInetSocket client program. Before running this, run either
'isocksvr' or 'dsocksvr -i' in another terminal or in the
background.
You can specify a connection timeout in milliseconds on the command-line:
isockcli 1000
will wait 1 second.
}
{$mode objfpc}{$H+}
uses sysutils, ssockets;
Const
TheHost = 'localhost';
ThePort = 4100;
var
S : String;
i : longint;
begin
S:='This is a textstring sent by the client'#10;
With TInetSocket.Create(TheHost,ThePort,StrToIntDef(ParamStr(1),0)) do
begin
For I:=1 to 10 do
Write(S[1],Length(S));
S:='QUIT'#10;
Write(S[1],Length(S));
Free;
end;
end.

View File

@ -0,0 +1,81 @@
Program server;
{
This file is part of the Free Component Library (FCL)
Copyright (c) 1999-2000 by the Free Pascal development team
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
{
TInetServer server program. This will listen on port 4100 till
a client connects. You can connect by running the 'isockcli' or
'dsockcli -i' programs in another terminal.
}
{$mode objfpc}{$H+}
uses ssockets;
const
ThePort=4100;
Type
TINetServerApp = Class(TObject)
Private
FServer : TInetServer;
Public
Constructor Create(Port : longint);
Destructor Destroy;override;
Procedure OnConnect (Sender : TObject; Data : TSocketStream);
Procedure Run;
end;
Constructor TInetServerApp.Create(Port : longint);
begin
FServer:=TINetServer.Create(Port);
FServer.OnConnect:=@OnConnect;
end;
Destructor TInetServerApp.Destroy;
begin
FServer.Free;
end;
Procedure TInetServerApp.OnConnect (Sender : TObject; Data : TSocketStream);
Var Buf : ShortString;
Count : longint;
begin
Repeat
Count:=Data.Read(Buf[1],255);
SetLength(Buf,Count);
Write('Server got : ',Buf);
Until (Count=0) or (Pos('QUIT',Buf)<>0);
Data.Free;
FServer.StopAccepting;
end;
Procedure TInetServerApp.Run;
begin
FServer.StartAccepting;
end;
Var
Application : TInetServerApp;
begin
Application:=TInetServerApp.Create(ThePort);
Application.Run;
Application.Free;
end.