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