서버 소켓에서..접속된 클라이언트들에게 텍스트 화일을 보내고..
그것을 메모에 뿌려주는 프로그램을 만들어 보는중에 이곳저곳에서
받아온 자료를 기본으로 하여.. 만들어보았는데요..
처음 한번은 되는거 같더니.. 블로킹 어쩌구 저쩌구 에러가 뜨더라고요
고수님들 도와주세요
소켓은 기본제공하는거구요..
서버소켓에서 송신소스입니다.
procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.ServerType:=stThreadBlocking;
ServerSocket1.Active:=True;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
j:integer;
TheStram : TWinSocketStream;
AFile : TfileStream;
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
for j:= 1 to ServerSocket1.Socket.ActiveConnections do
begin
TheStram := TWinSocketStream.Create(ServerSocket1.Socket.Connections[j-1],6000); //접속된 클라이언 모두모내기
AFile:= TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
try
try
TheStram.CopyFrom(AFile, AFile.Size);
except
ShowMessage('전송에 실패하였습니다.');
end;
finally
TheStram.Free;
AFile.Free;
end;
end;
end;
클라이언트 소켓에서 수신부분입니다.
procedure TForm1.ClientSocket1Read(Sender: TObject;Socket: TCustomWinSocket);
var
TheStream : TWinSocketStream;
Buffer : array[0..10000] of char;
AFile : TFileStream;
Rcvcount : integer;
begin
TheStream := TWinSocketStream.Create(Socket,60000);
AFile := TFileStream.Create('c:output.txt',fmCreate);
try
Rcvcount := TheStream.Read(Buffer, High(buffer));
AFile.Write(buffer,Rcvcount);
AFile.CopyFrom(TheStream, high(buffer));
Memo1.Lines.LoadFromFile('c:output.txt');
finally
TheStream.Free;
AFile.Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Host:='210.110.25.151';
ClientSocket1.Port:=8000;
ClientSocket1.Active:=true;
end;