Java傳遞音訊給PC端C 程式《二》

2021-07-30 17:37:50 字數 1338 閱讀 4236

採用報頭形式傳送檔案,傳送的整塊位元組由4部分組成。

1. 檔案的名稱轉成位元組後,計算該位元組長度;

2. 檔名轉成的位元組 ;

3. 把檔案轉成位元組,計算該檔案位元組的長度;

4. 檔案轉的位元組

服務端通過讀取長度知道後面該長度的位元組為檔名或檔案。

檔名長度用4個位元組裝載

檔名長度不限

檔案長度用4個位元組裝載

檔案長度不限

a1a2

a3a4

01110111…

111000000…

01110111…

0101010100100001110101001001010010101010…

在位元組流中,a1佔體積4個位元組,a1表示a2的長度,a3佔體積4個位元組,a3表示a4的長度

- 第一步,建立連線

private executorservice executor  = executors.newfixedthreadpool(5);..

.socket socket = new socket(host, integer.parseint(port));

executor.submit(new sendmusicrunnable(socket, musicentity));

private

class

sendmusicrunnable

implements

runnable

@override

public

void

run()

dos.flush();

//5.傳遞結束

log.e("tag", "【sendmusicrunnable】類的方法:【run】: " + "傳檔案結束");

} catch (ioexception e) finally

if(dos!=null)}}

}/** * int型別轉成4個位元組的byte

**/private

static

byte inttobytearray(int i)

至此客戶端傳輸結束。

c#寫的服務端執行流程大概如下

1. 開始接收位元組流;

2. 判斷接收了4個位元組,然後知道接下來的n個位元組是檔名稱;

3. 讀取檔名稱結束後,即讀到第4+n位元組,再截獲第(4+n)~(4+n+4)位元組;

4. 知道檔案長度為xn;

5. 然後一直讀到結束,儲存檔案到指定位址,判斷檔案長度和xn是否相等,不相等刪除檔案。

下次再更新c#寫服務端的**。

C語言中給main函式傳遞引數!

相信大家用c語言定義main函式時,大多數人的寫法都是int main void 其實main函式是可以向其傳遞引數的,給個例項 給main函式傳參例項 include include int main int argc,char argv int main int argc,char argv i...

c 中如何給函式傳遞陣列引數

在c 中,如果要給乙個函式傳入乙個陣列,一般都是傳入兩個引數乙個陣列指標和乙個陣列大小 例 void print 1 int n,int datas std cout std endl 對這個函式,我們可以這樣使用它 const int n 3 int datas n print 1 n,datas...

C 傳遞lambda表示式給函式

有時候,我們會需要將乙個函式作為變元傳遞給另乙個函式,這時,就需要了解函式指標的作用了 先來回顧一下函式指標 函式指標不同於普通指標,它儲存的內容還包括乙個函式的返回型別和引數列表,形式為 返回型別 函式指標名 引數列表 當乙個函式指標建立後,它就只能指向對應返回型別和引數型別的函式,無法指向其他型...