/**
* 函式:xsenddata
* 描述:傳送資料
* 引數:sock socket
* lpszbuff 緩衝區
* ndatasize 資料長度
* npacketsize 每次傳輸的資料塊長度
* novertime 超時 (秒)
* 返回:實際傳輸的資料長度
*/int xsenddata(socket sock, lpstr lpszbuff, int ndatasize, int npacketsize, int novertime)
else if (nsending > npacketsize)
// 判斷是否超時
if((int)(gettickcount() - dwstart) > 1000 * novertime)
nret = send(sock, lpszbuff + nsent, nsending, 0);
if (nret == socket_error)
nsent += nret; }
return nsent;
}/**
* 函式:xrecvdata
* 描述:接收資料
* 引數:sock socket
* lpszbuff 緩衝區
* ndatasize 資料長度
* npacketsize 每次傳輸的資料塊長度
* novertime 超時 (秒)
* 返回:實際傳輸的資料長度
*/int xrecvdata(socket sock, lpstr lpszbuff, int ndatasize, int npacketsize, int novertime)
else if (nrecving > npacketsize)
// 判斷是否超時
if((int)(gettickcount() - dwstart) > 1000 * novertime)
nret = recv(sock, lpszbuff + nrecved, nrecving, 0);
if (nret == socket_error)
nrecved += nret; }
return nrecved;
}/**
* 函式:xsendfile
* 描述:傳送檔案
* 引數:sock socket
* lpszfile 檔案路徑
* dwfilesize 檔案長度
* nbuffsize 緩衝區長度
* 返回:檔案長度
*/int xsendfile(socket sock, lpctstr lpszfile, dword dwfilesize, int nbuffsize)
// 讀取檔案內容並傳送資料
dword dwsent = 0;
int nsending, nret;
char *lpszsend = new char[nbuffsize];
if (lpszsend == null)
while (dwsent < dwfilesize)
else if (nsending > nbuffsize)
memset(lpszsend, 0x00, nbuffsize);
file.read(lpszsend, nsending);
nret = xsenddata(sock, lpszsend, nsending, 1024, 1);
if (nret == nsending)
else
} // 關閉檔案控制代碼
file.close();
delete lpszsend;
return dwsent;
}/**
* 函式:xrecvfile
* 描述:接收檔案
* 引數:sock socket
* lpszfile 檔案路徑
* dwfilesize 檔案長度
* nbuffsize 緩衝區大小
* 返回:檔案長度
*/int xrecvfile(socket sock, lpctstr lpszfile, dword dwfilesize, int nbuffsize)
dword dwrecvd = 0;
int nrecving, nret;
char *lpszrecv = new char[nbuffsize];
if (lpszrecv == null)
while (dwrecvd < dwfilesize)
else if (nrecving > nbuffsize)
memset(lpszrecv, 0x00, nbuffsize);
nret = xrecvdata(sock, lpszrecv, nrecving, 1024, 30);
if (nret == nrecving)
else
}// 關閉檔案控制代碼
file.close();
delete lpszrecv;
return dwrecvd;
}
socket 傳輸檔案
在兩台計算機傳輸檔案之前,必需得先有一台計算機建立套節子連線並繫結乙個固定得埠,並在這個埠偵聽另外一台計算機的連線請求。socket new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp socket.blo...
socket 傳輸檔案
在兩台計算機傳輸檔案之前,必需得先有一台計算機建立套節子連線並繫結乙個固定得埠,並在這個埠偵聽另外一台計算機的連線請求。socket new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp socket.blo...
Socket傳輸檔案示例
socket傳輸檔案示例 1 顯示檔案進度 2 可以隨時終止傳輸過程 傳送資料執行緒 uint senddatathread lpvoid lpparam 接收資料執行緒 uint receivedatathread lpvoid lpparam 傳送資料按鈕訊息響應函式 void ctzg004d...