TServerSocket: confusion with socket objects

So, I have this application that checks the weather, which the user can log into the system or not.

It consists of several Clients (up to 200) and a server that processes login requests (containing username, PW and IP). The server checks the weather when the user exists and sends a response.

TLoginQuery is a record.

procedure TLogin_Form.btnLoginClick(Sender: TObject);
 var LoginQuery1: TLoginQuery;
begin
 if not LoginSocket.Active then
  begin
   LoginSocket.Open;
  end;

//Paketchen schnΓΌren.
 LoginQuery1.Name := ledtName.Text;
 LoginQuery1.Passwort := ledtPasswort.Text;
 LoginQuery1.IP := LoginSocket.Socket.LocalAddress;
//LoginQuery Γ­n den Socket legen.
 LoginSocket.Socket.SendBuf(LoginQuery1, SizeOf(LoginQuery1));

end;

The server is currently reading:

procedure TServer_Form.ServerSocketClientRead(Sender: TObject;
Socket: TCustomWinSocket);
 var LoginQuery: TLoginQuery;
     uservalid: boolean;
begin
 uservalid := false;
 Socket.ReceiveBuf(LoginQuery, SizeOf(LoginQuery));
 if CheckIfUserValid(LoginQuery) then
  begin
   uservalid := true;
   ServerSocket.Socket.SendBuf(uservalid, SizeOf(uservalid));
  end;

end;

Now the question is: Does the server (as usual) create another socket connection to the client?

My suggestion:

ClientA usernalid boolean ( ). uservalid boolean -, : , ClientA uservalid boolean ( ) ClientB, , ( ) uservalid boolean.

. ?

+3
2

TServerSocket.OnClientRead Socket: TCustomWinSocket . , Foo TServer_Form.ServerSocketClientRead,

 if CheckIfUserValid(LoginQuery) then
  begin
   uservalid := true;
   Socket.SendBuf(uservalid, SizeOf(uservalid));
  end;

.

+2

, . . . , , . ( , IP- , , IP-, )

TServerSocket, IPWorks , , . , , , /, , - / .

0
source

Source: https://habr.com/ru/post/1713221/


All Articles