比如base64傳輸文本內(nèi)容,假如有10MB從客戶端發(fā)送到服務端。那么服務端在接收這種數(shù)據(jù)的時候,是否會正常?
另外,TEXT最大支持多少MB的文本字符串發(fā)送呢?默認是多大?是不是可以根據(jù)設置緩沖區(qū)大小,可以無限大?(只要客戶端能發(fā)送出來)
首先無論是客戶端還是服務端都是相對的概念,都有socket發(fā)送緩沖區(qū)和接收緩沖區(qū)的概念,所以建議抓住一頭來理解更容易:
1、workerman服務端在接收這10MB的數(shù)據(jù)時,是否正常取決于客戶端每次發(fā)送的數(shù)據(jù)包大小,服務端每個連接所能接收的最大包大小默認為10MB,超過了就會被視為非法數(shù)據(jù)并斷開連接,不過你可以在應用中手動修改默認包大小;
2、客戶端最大能發(fā)送多大的數(shù)據(jù)這取決于客戶端socket發(fā)送緩沖區(qū)的大小; 但是workerman作為客戶端時,略有不同,因為workerman本身還引入了一層應用層緩沖區(qū),這個緩沖區(qū)的默認大小是1MB,不過你仍然可以在應用中手動修改這個默認緩沖緩沖區(qū)的大小;所以不難發(fā)現(xiàn)某端發(fā)送數(shù)據(jù)大小既有可能取決于應用層發(fā)送緩沖區(qū)大小,更會取決于內(nèi)核socket發(fā)送緩沖區(qū)大小;
3、某端可以發(fā)送無限大數(shù)據(jù)嗎? 根據(jù)前面的描述顯然不可能,更何況每個進程所能分配的內(nèi)存大小也是受限的。