#define
dubeg
using
system;
using
system.io;
using
system.text;
using
system.net;
using
system.threading;
using
system.net.sockets;
using
system.collections.generic;
using
system.runtime.serialization.formatters.binary;
namespace
socketserver
...;
//文字
readonly
byte
_objehead
=new
byte
...;//
物件readonly
byte
_filehead
=new
byte
...;//
檔案int
receivelen;
//接收到的未處理的資料的長度
//int sendbigs;
//傳送的包數
#endregion
屬性#region
屬性/**/
//////
獲取遠端終結點
///public
endpoint remoteendpoint
...}
/**/
//////
socket是否已連線
///public
bool
connected
...}
/**/
//////
設定或獲取臨時資料夾的路徑
///public
string
filepath
...set
...}
#endregion
建構函式
#region
建構函式
tcptranslate()
...}
/**/
//////
伺服器端呼叫此建構函式
//////
socket成功連線的socket
public
tcptranslate(socket socket)
: this
()...
/**/
//////
客戶端呼叫此建構函式
//////
要連線的伺服器ip
///要連線的埠
public
tcptranslate(
string
ip,
intport)
: this
()...
#endregion
[system.diagnostics.conditional(
"dubeg")]
public
static
void
writeline(
string
message)
.../**/
//////
開始接收資料
///public
void
startreceive()
...else
...}
private
void
connected(iasyncresult iar)
.../**/
//////
接收資料**函式
//////
private
void
receivcedata(iasyncresult ar)
...else
...}
switch
(recebytes[0])
...//
繼續接收資料
byte
bytes
=new
byte
[_bagsize];
_socket.beginreceive(bytes,
0, bytes.length, socketflags.none,
newasynccallback(receivcedata), bytes);
return;}
catch
(socketexception socketerr)
...catch
(objectdisposedexception socketclose)
...catch
(exception err)
...//
斷開連線事件
if(disconnect
!=null
) disconnect(_socket,
this
);_recobjelen =-
1;
_recfilelen =-
1;
}void
receivcefile(
intrecelen,
byte
recebytes)
...else
...}
else
if(bagsequence
==_bufferfile.nextbag)
...sendstate(recebytes);
}void
refileend(filebase f)
...}
void
repeatsend()
...void
requestrepeatsend()
.../**/
//////
接收多包時的應答包
//////
狀態protected
virtual
void
sendstate(
byte
recebytes)
...protected
virtual
void
sendend(iasyncresult iar)
...void
receivcetext(
intrecelen,
byte
recebytes)
...writeline(restr);
}/**/
//////
傳送文字
//////
///public
bool
sendtext(
string
text)
...return
false;}
/**/
//////
傳送檔案
//////
檔案路徑
///public
bool
sendfile(
string
filepath)
...else
...);
_allowsendfile
=true;}
return
true;}
return
false;}
private
void
sendfilecallback(iasyncresult ar)
...else
...);
if(sendoverfile
!=null
)...
_allowsendfile
=true;}
}}}
同步傳輸 非同步傳輸
填空題 2016年 在資料傳輸率相同的情況下,同步傳輸率高於非同步傳輸速率的原因是 a 發生錯誤的概率小 b 附加的冗餘資訊量少 c 字元或組傳送,間隔少 d 採用crc迴圈碼校驗 b資料的傳輸方式一般有兩種,即同步傳輸與非同步傳輸。非同步傳輸意味著傳輸的雙方不需要使用某種方式來 對時 所以它並不傳...
同步傳輸 與 非同步傳輸
開門見山直接看圖。解析 1 不管是同步還是非同步,字元的傳送時間和接受時間要一樣。如一個字元傳送為1秒,接受也需要為1秒 小於一秒的話,利用軟體延時 2 同步非同步最大的不同是 非同步傳輸時,間隙可以不同步。比如,幀1傳輸完後 隔5秒傳輸幀2.間隙為5秒。再接受方,接受完幀1後,可以隔10秒再開始接...
同步傳輸與非同步傳輸
在同步傳輸中,資料以塊或幀的形式傳送。此傳輸是全雙工型別。在傳送者和接收者之間強制性同步。在同步傳輸中,資料之間沒有間隙。與非同步傳輸相比,傳輸大量資料更加有效和可靠。在非同步傳輸中,資料以位元組或字元的形式傳送。該傳輸是半雙工型傳輸。在該傳輸中,在資料的起始位和停止位都新增了奇偶校驗位。它不需要同...
socket 傳輸檔案
在兩臺計算機傳輸檔案之前,必需得先有一臺計算機建立套節子連線並繫結一個固定得埠,並在這個埠偵聽另外一臺計算機的連線請求。socket new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp socket.blo...
socket 傳輸檔案
在兩臺計算機傳輸檔案之前,必需得先有一臺計算機建立套節子連線並繫結一個固定得埠,並在這個埠偵聽另外一臺計算機的連線請求。socket new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp socket.blo...