亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4390 | 回復(fù): 3
打印 上一主題 下一主題

socket文件傳輸,客戶端寫文件速度特別慢 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2005-07-22 10:11 |只看該作者 |倒序瀏覽
注:雖然用php寫的,但是原理應(yīng)該是一樣的,因為這個板塊高手比較多,所以發(fā)到這個上面了,比較著急用,請各位幫幫忙

我用php寫了server和client程序,我要從server接收文件handle,然后再client寫文件,但是在client寫文件的時候,一個1k不到的文件要寫2分鐘左右,高手幫我看看,是什么原因
付程序[第一次,羅嗦的地方請幫忙告訴一下,如果有類似的例子也可以,我去自己看,謝謝各位了]
<?php
// Set time limit to indefinite execution
set_time_limit (0);

// Set the ip and port we will listen on
#$address = '172.30.6.110';
$address = '192.168.11.4';
$port = 9200;


// Create a TCP Stream socket
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
// Bind the socket to an address/port
socket_bind($sock, $address, $port) or die('Could not bind to address');
// Start listening for connections
socket_listen($sock);



$val_source_dir = "D:/php4/webapp/file";
$val_input_file_pattern = "/sample*/";

//得到要傳輸?shù)奈募斜?
$has_file_list = r25_get_file_list($val_source_dir,$val_input_file_pattern);

foreach($has_file_list as $val_file){
   $clientHandle = socket_accept($sock);
   echo "file name:".$val_file."\n";
   $output = getFileContent($val_file);
   socket_write($clientHandle,$output);

   do {
       if (false === ($buf = socket_read($clientHandle, )) {
           echo "socket_read() failed: reason: " . socket_strerror($clientHandle) . "\n";
           break;
       }
       if ($buf == 'ok') {
           break;
       }
   } while (true);
       //
        

       printf ("<<<<<<<<<<<<< %s >;>;>;>;>;>;>;>;>;>;>;>;>;\n",$val_file);
            
            
socket_close($clientHandle);
}


// Close the master sockets
socket_close($sock);


function getFileContent($val_file) {
$file_content = file_get_contents ($val_file);
echo ">;>;>;>;>;>;>;>;>;>;>;>;>;".filesize ($val_file)."<<<<<<<<<<<<<<\n";
return $file_content;
}

?>;

客戶端:
<?
define("INPUT_PATH","D:\php4\webapp\clientIn";

$i = 0;
while (true) {

   $address = '192.168.11.4';
   $port = 9200;

   $i ++;
   $read_handle = fsockopen($address, $port, $errno, $errstr,2);
   if (!$read_handle) {
       echo "$errstr ($errno)<br />;\n";
   } else {
        if (writeFile($read_handle, $i ) == true) {
           $out = "ok";
           fputs($read_handle, $out,strlen($out));
        } else {
           echo "faile restart send\n";
           $out = "ng";
           fputs($read_handle, $out,strlen($out));
        }
         fclose($read_handle);
   }


}



function writeFile($read_handle, $index) {

$filename = "\sample_".$index;

$filewrite = fopen(INPUT_PATH."$filename","wb";

while (!feof ($read_handle)) {
    $buffer = fgets($read_handle, 4096);
if (fwrite($filewrite, $buffer) == false) {
print "not write $filename\n";
return false;
}
}


fclose($filewrite);
return true;
}

?>;

論壇徽章:
0
2 [報告]
發(fā)表于 2005-07-22 10:45 |只看該作者

socket文件傳輸,客戶端寫文件速度特別慢

我找到辦法了,我重新設(shè)定了客戶端的緩沖區(qū)的大小
速度就變快了,但是不知道算不算正確地解決辦法

論壇徽章:
0
3 [報告]
發(fā)表于 2005-07-22 12:04 |只看該作者

socket文件傳輸,客戶端寫文件速度特別慢

我弄錯了,加上那個緩沖沒有作用,是因為我在client write從server的數(shù)據(jù)之前,我先發(fā)給server端一個"ok"的字符,這個字符導(dǎo)致了server繼續(xù)讀取下一個文件,如果我的原意是等客戶端寫完了這個數(shù)據(jù)以后,才希望服務(wù)器發(fā)下一筆數(shù)據(jù)過來,最先發(fā)的就是這個意思,但是卻需要等很長的時間
不知道為什么

論壇徽章:
0
4 [報告]
發(fā)表于 2005-07-22 15:51 |只看該作者

socket文件傳輸,客戶端寫文件速度特別慢

up
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP