1public
static
void main(string args) throws
ioexception
19bw.write(line);
20bw.newline();
21bw.flush();22}
2324
//給出反饋
25 bufferedwriter bwserver = new bufferedwriter(new
outputstreamwriter(
26s.getoutputstream()));
27 bwserver.write("檔案上傳成功");
28bwserver.newline();
29bwserver.flush();
3031
//釋放資源
32bw.close();
33s.close();
34 }
按照我們正常的思路加入反饋資訊,結果卻沒反應。為什麼呢?
讀取文字檔案是可以以null作為結束資訊的,但是呢,通道內是不能這樣結束資訊的。
所以,伺服器根本就不知道你結束了。而你還想伺服器給你反饋。所以,就相互等待了
如何解決呢?
a:在多寫一條資料,告訴伺服器,讀取到這條資料說明我就結束,你也結束吧。
這樣做可以解決問題,但是不好。
b:socket物件提供了一種解決方案
public void shutdownoutput()
1public
static
void main(string args) throws
ioexception
1819
//自定義乙個結束標記
20//
bw.write("over");
21//
bw.newline();
22//
bw.flush();
2324
//socket提供了乙個終止,它會通知伺服器你別等了,我沒有資料過來了
25s.shutdownoutput();
2627
//接收反饋
28 bufferedreader brclient = new bufferedreader(new
inputstreamreader(
29s.getinputstream()));
30 string client = brclient.readline(); //
阻塞31
system.out.println(client);
3233
//釋放資源
34br.close();
35s.close();
36 }
TCP實現檔案上傳
伺服器端 public class tcpserverdemo02 通知客戶端我接收完畢了 outputstream os socket.getoutputstream os.write 我已經接收完畢了,可以關閉連線 getbytes 5.關閉資源 os.close fos.close is.cl...
PHP 檔案上傳優化
1.7.1 更改檔名 方法一 通過時間戳做檔名 echo strrchr path,從最後乙個點開始擷取,一直擷取到最後 echo time rand 100 999 strrchr path 方法二 通過uniqid 實現 生成唯一的id echo uniqid goods strrchr pat...
優化Android iOS檔案上傳超時
android上首先自帶的httpurlconnection是不支援這個功能的,於是用了okhttp替代,設定了calltimeout還不夠,還要設定connect read write timeout。ios上,用了afnetworking,主要設定timeoutforresource,另外調大了...