Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
Chat Server empfängt immer nur einmal
18. Mär 2005, 18:25
Ich bin gerade dabei einen kleinen Chat mit Server und Clients zu programmieren. Dabei benutze ich keine Komponenten. Der Server wartet dabei in einem Thread auf Clients, die sich verbinden. Jeder Client kommt in ein Array. Dann geht der Server im Thread jedes mal dieses Array durch und guckt, ob vom entsprechenden Client was kommt:
Delphi-Quellcode:
function ServerThread(p: Pointer): Integer;
var
TempConSocket: TSocket;
i: Integer;
MsgBuffer: array[0..255] of Char;
resourcestring
rsListen = 'Listening...';
rsSocketOK = 'Neuer Client hat sich verbunden.';
rsSocketError = 'Ungültige Socket';
rsMsg = 'Client: %s';
begin
bRunning := True;
if listen(acceptSock, 10) <> SOCKET_ERROR then
begin
AddLogText(hApp, IDC_LV, rsListen, 2);
while bRunning do
begin
listen(acceptSock, 10);
TempConSocket := accept(acceptSock, nil, nil);
if TempConSocket <> INVALID_SOCKET then
begin
SetLength(conSocket, length(conSocket)+1);
conSocket[High(conSocket)] := TempConSocket;
AddLogText(hApp, IDC_LV, rsSocketOK, 2);
end
else
AddLogText(hApp, IDC_LV, rsSocketError, 0);
for i := 0 to length(conSocket) - 1 do
begin
if recv(conSocket[i], MsgBuffer, sizeof(MsgBuffer), 0) > 0 then
AddLogText(hApp, IDC_LV, Format(rsMsg, [String(MsgBuffer)]), 2);
Zeromemory(@MsgBuffer, sizeof(MsgBuffer));
end;
end;
end
else
AddLogText(hApp, IDC_LV, SysErrorMessage(WSAGetLastError), 0);
result := 0;
end;
Aber irgendwie kann ich nur einmal was an den Server senden. Alles weitere kommt nicht an. irgendwo, muss da ein Denkfehler von mir sein.
Michael Ein Teil meines Codes würde euch verunsichern.
|
|
Zitat
|