function
WlanStartServer() :
Boolean
;
var
arg:
Integer
;
IPs:
String
;
begin
Result :=
False
;
WSAStartup(
$101
, WSADataStruct);
SocketHandle := Winsock
.
socket(PF_INET, SOCK_STREAM,
0
);
if
(SocketHandle = INVALID_SOCKET)
then
begin
MessageDlg(
'socket() failed!'
, mtError, [mbOK], -
1
);
Exit;
end
;
SockAddr
.
sin_family := AF_INET;
SockAddr
.
sin_addr
.
S_addr := INADDR_ANY;
SockAddr
.
sin_port := htons(
17584
);
if
(bind(SocketHandle, SockAddr, sizeof(SockAddr)) = SOCKET_ERROR)
then
begin
MessageDlg(
'The port used by the PSPdisp server is in use. Probably another instance is already running.'
, mtError, [mbOK], -
1
);
Exit;
end
;
if
(listen(SocketHandle,
1
) = SOCKET_ERROR)
then
begin
MessageDlg(
'listen() failed!'
, mtError, [mbOK], -
1
);
Exit;
end
;
arg :=
1000
;
setsockopt(SocketHandle, SOL_SOCKET, SO_RCVTIMEO, @arg, sizeof(arg));
setsockopt(SocketHandle, SOL_SOCKET, SO_SNDTIMEO, @arg, sizeof(arg));
IPs := GETAllIPAddresses();
MainForm
.
OptionsWlanAddress
.
Caption := Ips;
if
MainForm
.
OptionsWlanNotifyStart
.
Checked
then
MainForm
.
ShowBalloonHint(
'PSPdisp: Server started'
,
'Please connect your PSP to the following IP address:'
+ #
10
+ Ips, bfInfo);
Result :=
True
;
end
;