2010-06-22 20 views
1

我正在使用perl編寫基於套接字的應用程序。我發現,如果客戶iniate的套接字句柄兩個打印 在如下的方式:當「打印」數據到套接字時爲什麼丟失數據

print $sock "hello kitty"; 
#do some other stuff 
print $sock "hello jack"; 

服務器端接收不到「凱蒂貓」的全部內容。我不確定,但強烈懷疑有緩衝區覆蓋發生在某處...所以我有兩個問題在這裏

  1. 爲什麼數據丟失?是否因爲 「print」的buf大小有限?
  2. 如何避免它?我可以接受比打印方式以外的其他 方法
+1

您必須向我們展示導致問題的程序,但省略不相關的代碼。 – daxim 2010-06-22 09:13:53

回答

1

我眼前的猜測是,插座可以是行緩衝模式,並正在等待您在發送數據之前打印一個換行符(或填充緩衝區)另一邊。如果是這樣的話,那麼print $sock "hello kitty\n";應該按照你的意圖工作。

但是,正如daxim所評論的,我們沒有辦法確定沒有看到所有相關代碼,包括(但不限於)如何創建套接字。

相關問題