使用C 進行點對點通訊和檔案傳輸(通訊基類部分)

2021-03-31 08:57:01 字數 4334 閱讀 7769

最近乙個專案要用到點對點檔案傳輸,俺就到處找資料寫程式,最後終於完成了,為了讓別人少走些彎路,俺決定將俺程式中最重要的部分貢獻出來,希望對大家有所幫助。

俺的程式分三部分,包括傳送部分、接受部分和乙個兩者共享的通訊基類,這個基類才是俺心血的結晶:)

一、通訊基類

usingsystem;

usingsystem.***.sockets;

usingsystem.*** ;

usingsystem.io ;

usingsystem.windows.forms;

usingsystem.text;

namespacebaseclass

///

///命令部分的長度

///private

static

readonly

intcmdlen = 50 ;

///

///命令注釋部分的長度

///private

static

readonly

intdesclen = 100 ;

///

///可變長度的長度資訊部分所佔的位元組數

///private

static

readonly

intdynamiclengthlen = 10 ;

///

///每次處理可變資訊部分的長度

///private

static

readonly

intdeallen = 1024 ;

///

////應答的最大長度

///private

static

readonly

intresponlen = 20 ;

///

///用於填充命令或注釋不足長度部分的字元

///

private

static

readonly

charfillchar = ''^'' ;

///

///成功傳送一部分資料後的**方法(也可以認為是觸發的事件,但嚴格來說還不是)

///public

delegate

voidonsend(

intitotal,

intisending) ;

///

///根據給定的伺服器和埠號建立連線

//////伺服器名

///埠號

///public

staticsocket connecttoserver(

stringstrhost,

intiport)

catch(exception e)

}

///

///將文字寫到socket中

//////要傳送資訊的socket

///要傳送的資訊

///是否成功

public

static

boolwritetexttosocket(socket s,

stringstrinfo)

catch(exception err)

}

///

///將命令文字寫到socket中

//////要傳送命令文字的socket

///要傳送的命令文字

///是否成功

public

static

boolwrite***mandtosocket(socket s,

stringstrcmd)

///

///將命令注釋寫到socket中

//////要傳送命令注釋的socket

///要傳送的命令注釋

///是否成功

public

static

boolwrite***manddesctosocket(socket s,

stringstrdesc)

///

///傳送可變資訊的位元組數

//////要傳送位元組數的socket

///位元組數

///是否成功

public

static

boolwritedynamiclentosocket(socket s,

intilen)

///

///將快取的指定部分傳送到socket

//////要傳送快取的socket

///要傳送的快取

///要傳送快取的起始位置

///要傳送快取的位元組數

///每次傳送的位元組說

///每次傳送成功後的**函式

///是否傳送成功

public

static

boolwritebuftosocket(socket s,

byte buf,

intistart,

inticount,

intiblock,onsend sendsuccess)

return

true;

}

///

///將長度不固定文字傳送到socket

//////要傳送文字的socket

///要傳送的文字

///成功傳送一部分文字後的**函式

///得到文字長度的**函式

///public

static

boolwritedynamictexttosocket(socket s,

stringstrtext,

onsend onsendtext)

catch(exception err)

}

///

///將檔案寫到socket

//////要傳送檔案的socket

///要傳送的檔案

///是否成功

public

static

boolwritefiletosocket(socket s,

stringstrfile,

onsend onsendfile)

catch(exception err)

finally

}

///

///對方對自己訊息的簡單回應

//////

///public

static

stringreadresponsionfromsocket( socket s)

///

///從socket讀取命令

//////要讀取命令的socket

///讀取的命令

public

static

stringread***mandfromsocket( socket s)

///

///讀取命令注釋

//////要讀取命令注釋的socket

///讀取的命令注釋

public

static

stringread***manddescfromsocket( socket s)

///

///讀取可變部分的長度

//////要讀取可變部分長度的socket

///讀取的可變部分的長度

public

static

intreaddynamiclenfromsocket( socket s)

///

///讀取文字形式的可變資訊

//////要讀取可變資訊的socket

///讀取的可變資訊

public

static

stringreaddynamictextfromsocket( socket s)

strinfo = encoding.utf8.getstring(buf,0,ilen) ;

returnstrinfo ;

}

///

///讀取檔案形式的可變資訊

//////要讀取可變資訊的socket

///讀出後的檔案儲存位置

///是否讀取成功

public

static

boolreaddynamicfilefromsocket( socket s,

stringstrfile)

fs.write(buf,0,ilen) ;

return

true;

}

catch(exception err)

finally

}

}//end class

}//end namespace

上面是俺的通訊基礎類,有了這個類,再進行傳送接受還不是小菜一碟嗎?

使用C 進行點對點通訊和檔案傳輸(通訊基類部分)

使用c 進行點對點通訊和檔案傳輸 通訊基類部分 最近乙個專案要用到點對點檔案傳輸,俺就到處找資料寫程式,最後終於完成了,為了讓別人少走些彎路,俺決定將俺程式中最重要的部分貢獻出來,希望對大家有所幫助。俺的程式分三部分,包括傳送部分 接受部分和乙個兩者共享的通訊基類,這個基類才是俺心血的結晶 一 通訊...

使用C 進行點對點通訊和檔案傳輸(傳送接收部分)

上面介紹了通訊的基類,下面就是使用那個類進行傳送和接收的部分 二 傳送部分 傳送咱們使用了多執行緒,可以同時進行多個任務,比如傳送檔案 傳送文字等,互不影響 傳送文字方法 private void startsendtext string strhost,int iport,string strin...

《點對點通訊及檔案傳輸軟體》課程設計

這是大一寫的課程設計。點對點通訊及檔案傳輸軟體 一 軟體分析 軟體主要功能為通訊及檔案傳輸,通訊不侷限於區域網,檔案傳輸功能適合小檔案傳送,傳輸大檔案速度較慢。軟體可以方便的用於校園內 比如宿舍間,宿舍內 的檔案傳送,這樣就解決了xp系統和win7系統的共享難題,也避免了頻繁使用u盤對電腦usb介面...