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

還是關于IdTCPServer的問題啊!

答題得分者是:careychen
zhgwbzhd
一般會員


發表:10
回覆:32
積分:18
註冊:2008-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-09-25 14:45:51 IP:221.218.xxx.xxx 未訂閱
客戶耑髮過來的信息如下:
AABBB0
其中AA是標識,BBB是數據樣例,0是asc為0結尾。通過socket髮送過來。

我在服務耑接收,如果使用 ReadLn()接收,接收不到。(過程是connect-Execute-disconnect)就是停止在readln那裏。可能的原因是髮過來的字符串不是以“LF”/“CR”/“EOL”結尾的。

使用readbuffer(void*,int)可以接收到數據。但是髮過來的數據長度不一緻。
有什么辦法,我先讀取前麵有傚數據?把賸下的數據拋棄???

或者有沒有其他的什么方法???
謝謝各位啦!
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-09-25 15:28:29 IP:218.210.xxx.xxx 訂閱
ReadLn 可以自己下 Terminate 結束字元
如果是你的例子的話

sReadString = ReadLn(#0); 這樣子試試看....

===================引 用 zhgwbzhd 文 章===================
客戶耑髮過來的信息如下:
AABBB0
其中AA是標識,BBB是數據樣例,0是asc為0結尾。通過socket髮送過來。

我在服務耑接收,如果使用 ReadLn()接收,接收不到。(過程是connect-Execute-disconnect)就是停止在readln那裏。可能的原因是髮過來的字符串不是以“LF”/“CR”/“EOL”結尾的。

使用readbuffer(void*,int)可以接收到數據。但是髮過來的數據長度不一緻。
有什么辦法,我先讀取前麵有傚數據?把賸下的數據拋棄???

或者有沒有其他的什么方法???
謝謝各位啦!
------
價值的展現,來自於你用哪一個角度來看待它!!
zhgwbzhd
一般會員


發表:10
回覆:32
積分:18
註冊:2008-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-09-25 20:30:50 IP:222.130.xxx.xxx 未訂閱
我測試過了。

P = AThread->Connection->ReadLn("#0",5000,-1);

還是得不到任何數據。
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-09-25 21:01:50 IP:59.126.xxx.xxx 訂閱

===================引 用 zhgwbzhd 文 章===================
我測試過了。

P = AThread->Connection->ReadLn("#0",5000,-1); 請把兩個雙引號拿掉,因為是 ascii 碼 0 ,不是字串 "#0"

還是得不到任何數據。
------
價值的展現,來自於你用哪一個角度來看待它!!
zhgwbzhd
一般會員


發表:10
回覆:32
積分:18
註冊:2008-07-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-09-25 21:31:57 IP:222.130.xxx.xxx 未訂閱
P = AThread->Connection->ReadLn(#0,5000,-1); 
改稱這樣,編譯報錯。“E2206 illegal character '#' (0x23)”
P = AThread->Connection->ReadLn(0,5000,-1);
改稱這樣,編譯正常。不過還是得不到數據。

謝謝!
===================引 用 careychen 文 章===================

===================引 用 zhgwbzhd 文 章===================
我測試過了。

P = AThread->Connection->ReadLn("#0",5000,-1); 請把兩個雙引號拿掉,因為是 ascii 碼 0 ,不是字串 "#0"

還是得不到任何數據。
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-09-25 21:49:17 IP:59.126.xxx.xxx 訂閱
我是用 Delphi 的,所以在送 Ascii 0 時是送  #0 , 不知 BCB 送  0x0 會過嗎?
如果不行,就要恭請 RaynorPao 大出面了

===================引 用 zhgwbzhd 文 章===================
P = AThread->Connection->ReadLn(#0,5000,-1);
改稱這樣,編譯報錯。“E2206 illegal character '#' (0x23)”
P = AThread->Connection->ReadLn(0,5000,-1);
改稱這樣,編譯正常。不過還是得不到數據。

謝謝!
------
價值的展現,來自於你用哪一個角度來看待它!!
zhgwbzhd
一般會員


發表:10
回覆:32
積分:18
註冊:2008-07-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-09-25 22:11:13 IP:222.130.xxx.xxx 未訂閱
剛纔髮現有一個readfromstack得函數,可以獲得髮過來得數據得長度。

這樣我就可以一次把這些數據讀全。之后再截獲所需數據。
zhgwbzhd
一般會員


發表:10
回覆:32
積分:18
註冊:2008-07-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-09-25 22:32:11 IP:222.130.xxx.xxx 未訂閱
BCB中用0x0或者0都錶示0.
===================引 用 careychen 文 章===================
我是用 Delphi 的,所以在送 Ascii 0 時是送 #0 , 不知 BCB 送 0x0 會過嗎?
如果不行,就要恭請 RaynorPao 大出面了

===================引 用 zhgwbzhd 文 章===================
P = AThread->Connection->ReadLn(#0,5000,-1);
改稱這樣,編譯報錯。“E2206 illegal character '#' (0x23)”
P = AThread->Connection->ReadLn(0,5000,-1);
改稱這樣,編譯正常。不過還是得不到數據。

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