全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1873
推到 Plurk!
推到 Facebook!

Server端如何接收Client端的字串

答題得分者是:is_tem
rockman326
一般會員


發表:6
回覆:2
積分:1
註冊:2007-02-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-02-28 18:50:25 IP:218.169.xxx.xxx 訂閱
下面程式片段是Server端接收Client端的四則運算做處理之後再回傳Client端
我想再做一個接收字串的值,類似聊天室的功能,之前都是卡在開始服務後就
沒有處理了,請問我應該怎麼做才能接收到Client端的字串值呢

try
Log('開始服務');
while not self.Terminated do
begin
// 讀取
i:=uuTCPSocket.ReadData(FSocket,mStr,0,0,#13);
if i<0 then begin Log('讀取失敗: ' uuTCPSocket.GetErrorStr(i)); exit; end;
// 處理
i:=0; j:=0; n1:=0; n2:=0;
while true do
begin
j:=0; i:=Pos(' ',mStr); if i>0 then break;
inc(j); i:=Pos('-',mStr); if i>0 then break;
inc(j); i:=Pos('*',mStr); if i>0 then break;
inc(j); i:=Pos('/',mStr); if i>0 then break;
inc(j);
end;
if j<4 then
begin
try
n1:=StrToInt(Trim(Copy(mStr,1,i-1)));
n2:=StrToInt(Trim(Copy(mStr,i 1,Length(mStr)-i)));
except j:=4;
end;
end;
case j of
0: mRes:=IntToStr(n1 n2);
1: mRes:=IntToStr(n1-n2);
2: mRes:=IntToStr(n1*n2);
3: if n2=0 then mRes:='ERROR' else mRes:=IntToStr(n1 div n2);
else mRes:='ERROR';
end;
// 回覆
i:=uuTCPSocket.SendData(FSocket,mRes,C_MaxWait,true,#13);
if i<0 then begin Log('回覆失敗: ' uuTCPSocket.GetErrorStr(i)); exit; end;
Log('[' mStr ']=[' mRes ']');
end
finally
try CloseSocket(FSocket); except end;
Log('結束服務');
end;

is_tem
一般會員


發表:17
回覆:15
積分:11
註冊:2002-04-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-20 15:14:40 IP:219.79.xxx.xxx 訂閱
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var Msg: String;
begin
Msg:= Socket.ReceiveText;
// Process the code here//
end;

系統時間:2024-05-03 14:36:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!