1 | unit UGameSocket;
|
---|
2 |
|
---|
3 | {$mode delphi}
|
---|
4 |
|
---|
5 | interface
|
---|
6 |
|
---|
7 | uses
|
---|
8 | Classes, SysUtils, UTCP;
|
---|
9 |
|
---|
10 | type
|
---|
11 |
|
---|
12 | { TGameSocket }
|
---|
13 |
|
---|
14 | TGameSocket = class
|
---|
15 | procedure Send(Index: Integer; DataOut, DataIn: Pointer); virtual;
|
---|
16 | end;
|
---|
17 |
|
---|
18 | { TGameSocketNetworkServer }
|
---|
19 |
|
---|
20 | TGameSocketNetworkServer = class(TGameSocket)
|
---|
21 | private
|
---|
22 | procedure ClientConnect(Sender: TObject);
|
---|
23 | public
|
---|
24 | TCPServer: TTCPServer;
|
---|
25 | constructor Create;
|
---|
26 | destructor Destroy; override;
|
---|
27 | procedure Send(Index: Integer; DataOut, DataIn: Pointer); override;
|
---|
28 | end;
|
---|
29 |
|
---|
30 | { TGameSocketNetworkClient }
|
---|
31 |
|
---|
32 | TGameSocketNetworkClient = class(TGameSocket)
|
---|
33 | TCPClient: TTCPClient;
|
---|
34 | procedure Send(Index: Integer; DataOut, DataIn: Pointer); override;
|
---|
35 | constructor Create;
|
---|
36 | destructor Destroy; override;
|
---|
37 | end;
|
---|
38 |
|
---|
39 | { TGameSocketDirect }
|
---|
40 |
|
---|
41 | TGameSocketDirect = class(TGameSocket)
|
---|
42 | Remote: TGameSocketDirect;
|
---|
43 | procedure Send(Index: Integer; DataOut, DataIn: Pointer); override;
|
---|
44 | end;
|
---|
45 |
|
---|
46 | implementation
|
---|
47 |
|
---|
48 | { TGameSocketNetworkClient }
|
---|
49 |
|
---|
50 | procedure TGameSocketNetworkClient.Send(Index: Integer; DataOut, DataIn: Pointer
|
---|
51 | );
|
---|
52 | begin
|
---|
53 | TCPClient.Socket.Write(DataOut^, MemSize(DataOut));
|
---|
54 | end;
|
---|
55 |
|
---|
56 | constructor TGameSocketNetworkClient.Create;
|
---|
57 | begin
|
---|
58 | TCPClient := TTCPClient.Create;
|
---|
59 | end;
|
---|
60 |
|
---|
61 | destructor TGameSocketNetworkClient.Destroy;
|
---|
62 | begin
|
---|
63 | TCPClient.Free;
|
---|
64 | inherited Destroy;
|
---|
65 | end;
|
---|
66 |
|
---|
67 | { TGameSocketDirect }
|
---|
68 |
|
---|
69 | procedure TGameSocketDirect.Send(Index: Integer; DataOut, DataIn: Pointer);
|
---|
70 | begin
|
---|
71 | inherited Send(Index, DataOut, DataIn);
|
---|
72 | end;
|
---|
73 |
|
---|
74 | { TGameSocket }
|
---|
75 |
|
---|
76 | procedure TGameSocket.Send(Index: Integer; DataOut, DataIn: Pointer);
|
---|
77 | begin
|
---|
78 | end;
|
---|
79 |
|
---|
80 | { TGameSocketNetworkServer }
|
---|
81 |
|
---|
82 | procedure TGameSocketNetworkServer.ClientConnect(Sender: TObject);
|
---|
83 | var
|
---|
84 | Text: string;
|
---|
85 | begin
|
---|
86 | //Text := 'Welcome' + LineEnding;
|
---|
87 | //TTCPClientThread(Sender).Socket.Write(Text[1], Length(Text));
|
---|
88 | end;
|
---|
89 |
|
---|
90 | constructor TGameSocketNetworkServer.Create;
|
---|
91 | begin
|
---|
92 | TCPServer := TTCPServer.Create;
|
---|
93 | TCPServer.OnClientConnect := ClientConnect;
|
---|
94 | end;
|
---|
95 |
|
---|
96 | destructor TGameSocketNetworkServer.Destroy;
|
---|
97 | begin
|
---|
98 | TCPServer.Free;
|
---|
99 | inherited Destroy;
|
---|
100 | end;
|
---|
101 |
|
---|
102 | procedure TGameSocketNetworkServer.Send(Index: Integer; DataOut, DataIn: Pointer
|
---|
103 | );
|
---|
104 | var
|
---|
105 | I: Integer;
|
---|
106 | begin
|
---|
107 | for I := 0 to TCPServer.ThreadPool.Items.Count - 1 do
|
---|
108 | //(TCPServer.ThreadPool.Items[I]).Send(Index, DataOut, DataIn);
|
---|
109 | end;
|
---|
110 |
|
---|
111 | end.
|
---|
112 |
|
---|