導航:首頁 > 文件教程 > tcp文件傳輸代碼

tcp文件傳輸代碼

發布時間:2021-10-26 00:09:49

⑴ C++實現TCP文件傳輸

關鍵看你是想自己做一套協議,還是直接使用已有的FTP協議來實現了。
FTP是一個標準的文件傳輸協議,有很多現成的方案可以參考。
當然,如果你只是自己傳個特定的文件,那麼很簡單,自己定義個格式,與伺服器保持一致,然後用位元組流傳輸就可以了。

⑵ 下面是一段TCP文件傳輸的c/c++代碼,1,2,3,4句有什麼作用謝謝!!

charbuffer[sizeof(long)*2];申請2個雙抄字長度的內存,一般是8個位元組。
*(DWORD*)buffer=0x100;第一個雙字長度的整型數用0x100初始化。
*(DWORD*)(buffer+sizeof(long))=file.GetLength();這里buffer+4(暫且這么認為)就是第二個雙字的地址,也就是用file的長度值初始化第二個雙字。
pSocket->Send(buffer,sizeof(long)*2,0);將buffer裡面的幾個位元組數據發送出去。

⑶ 用java編寫TCP文件傳輸程序

你的郵箱是多少,發給你

⑷ TCP/IP編程實現遠程文件傳輸

這個嘛很簡單在TCP/IP網路結構中,為了保證網路安全,網路人員往往需要在路由器上添加防火牆,禁止非法用戶用FTP等安全危害較大的TCP/IP協議訪問主機。而有時系統維護人員需要用ftp將一些文件從中心機房主機傳到前端網點主機上,比如應用程序的替換升級。如果每次傳輸文件時都要打開防火牆,未免顯得有些繁瑣,要是在自己的應用程序中增加一個專門的文件傳輸模塊,那將是十分愉快的事情。

UNIX網路程序設計一般都採用套接字(socket)系統調用。針對目前十分流行的客戶/伺服器模式,其程序編寫步驟如下:
1.Socket系統調用
為了進行網路I/O,伺服器和客戶機兩端的UNIX進程要做的第一件事是調用socket()系統調用,建立軟插座,指明合適的通訊協議。格式為:
#include >sys/types.h>
#include >sys/socket.h>
int socket(int family,int type,int protocol)
其中:(1)family指明套節字族,其值包括:
AF_UNIX (UNIX內部協議族)
AF_INET (Iternet協議)
AF_NS (XeroxNs協議,TCP/IP編程取該值)
AF_IMPLINK (IMP鏈接層)
(2)type 指明套接字類型,取值有:
SOCK_STREAM (流套接字)
SOCK_DGRAM (數據報套接字)
SOCK_RAW (原始套接字)
SOCK_SEQPACKET (定序分組套接字)
一般情況下,前兩個參數的組合就可以決定所使用的協議,這時第三個參數被置為0,如果第一個參數為AF_INET,第二個參數選SOCK_STREAM,則使用的協議為TCP;第二個參數選SOCK_DGRAM,則使用的協議為UDP;當第二個參數選SOCK_RAW時,使用的協議為IP。值得指出的是並不是所有的族和類型的組合都是合法的,具體請查閱相關資料。該系統調用若成功則返回一個類似文件描述符,成為套節字描述字,可以像文件描述符那樣用read和write對其進行I/O操作。當一個進程使用完該軟插座時,需用close(<描述符>)關閉(具體見後面內容)。
2.伺服器端Bind系統調用
軟插座創建時並沒有與任何地址相關聯,必須用bind()系統調用為其建立地址聯系。其格式為:
#include <sys/types.h>
#include <sys/socket.h>
int bind(int socketfd,strUCt sockaddr_in *localaddr,sizeof(localaddr));
其中:(1)第一個參數socketfd是前步socket()系統調用返回的套節字描述符。
(2)第二個參數被捆向本地地址的一種結構,該結構在sys/netinet/in.h中定義:
struct sockaddr_in{
short sin_family;/*socket()系統調用的協議族如AF_INET*/
u_short sin_port;/*網路位元組次序形式的埠號碼*/
struct in_addr sin_addr;/*網路位元組次序形式的網路地址*/
char sin_zero[8];
}
一台機器上的每個網路程序使用一個各自獨立的埠號碼,例如:telnet程序使用埠號23,而ftp文件傳輸程序使用埠號21。我們在設計應用程序時,埠號碼可以由getservbyname()函數從/etc/services庫文件中獲取,也可以由htons (int portnum)函數將任意正整數轉換為網路位元組次序形式來得到,有些版本的UNIX操作系統則規定1024以下的埠號碼只可被超級用戶使用,普通用戶程序使用的埠號碼只限於1025到32767之間。網路地址可以由gethostbyname(char*hostname)函數得到(該函數和getservbyname()一樣都以網路位元組次序形式返回所有在他們結構中的數據),參數hostname為/etc/hosts文件中某一網路地址所對應的機器名。該函數返回一個類型為hostent的結構指針,hostent結構在netdb.h中定義:
struct hostent{
char *h_name;
char **h_aliases;
int h_addrtype;
int h_length;/*地址長度*/
char **h_addr_list; #define h_addr h_addr_list[0];/*地址*/
}
(3)第三個參數為第二個結構參數的長度,如果調用成功,bind返回0,否則將返回-1並設置errno。
3.伺服器端系統調用listen,使伺服器願意接受連接
格式:int listen(int socketfd,int backlong)
它通常在socket和bind調用後在accept調用前執行。第二個參數指明在等待伺服器執行accept調用時系統可以排隊多少個連接要求。此參數常指定為5,也是目前允許的最大值。
4.伺服器調用accept,以等待客戶機調用connect進行連接。格式如下:
int newsocket=(int socketfd,struct sockaddr_in *peer,int*addrlen);
該調用取得隊列上的第一個連接請求並建立一個具有與sockfd相同特性的套節字。如果沒有等待的連接請求,此調用阻塞調用者直到一連接請求到達。連接成功後,該調用將用對端的地址結構和地址長度填充參數peer和addlen,如果對客戶端的地址信息不感興趣,這兩個參數用0代替。
5.客戶端調用connect()與伺服器建立連接。格式為:
connect(int socketfd,struct sockaddr_in *servsddr,int addrlen)
客戶端取得套接字描述符後,用該調用建立與伺服器的連接,參數socketfd為socket()系統調用返回的套節字描述符,第二和第三個參數是指向目的地址的結構及以位元組計量的目的地址的長度(這里目的地址應為伺服器地址)。調用成功返回0,否則將返回-1並設置errno。
6.通過軟插座發送數據
一旦建立連接,就可以用系統調用read和write像普通文件那樣向網路上發送和接受數據。Read接受三個參數:一個是套節字描述符;一個為數據將被填入的緩沖區,還有一個整數指明要讀的位元組數,它返回實際讀入的位元組數,出錯時返回-1,遇到文件尾則返回0。Write也接受三個參數:一個是套節字描述符;一個為指向需要發送數據的緩沖區,還有一個整數指明要寫入文件的位元組個數,它返回實際寫入的位元組數,出錯時返回-1。當然,也可以調用send和recv來對套節字進行讀寫,其調用與基本的read和write系統調用相似,只是多了一個發送方式參數。
7.退出程序時,應按正常方式關閉套節字。格式如下:
int close(socketfd)
前面介紹了UNIX客戶/伺服器模式網路編程的基本思路和步驟。值得指出的是socket編程所涉及的系統調用不屬於基本系統調用范圍,其函數原形在libsocket.a文件中,因此,在用cc命令對原程序進行編譯時需要帶-lsocket選項。

⑸ 用TCP應用編程實現文件傳輸怎麼編程序

客戶端用TCPClient或Socket類建立連接,將要傳送的數據或文件序列化成byte[],用TCPClient或Socket類的Send方法發送。

服務端用TCPListener或Socket類建立偵聽,用Receive方法接收數據流至byte[],將byte[]反序列化成需要的文件或數據格式。

上面是同步傳輸的方法,非同步方法稍微繁瑣,不太適合初學者。

⑹ 急急急!!!!本人菜鳥 !Socket 編程實現TCP 文件傳輸。MFC。

1:你定義的是ListenSocket和SendSocket,而代碼中是listenSocket和sendSocket,VC或者VS是對大小寫敏感的,二者是不同的標識符,必然版會提示你二者沒權有聲明。
2:要實現在OnAccept()中調用ServerDlg類中的SendSocket,必須在CMySocket類中定義一個ServerDlg類的對象作為其成員變數,如ServerDlg *m_pDlg;這樣在OnAccept()就可以用通過
"m_pDlg->"的方式調用ServerDlg類的成員函數了

⑺ C語言編寫TCP的文件傳輸

粗略看了一下,你是用戶的是TCP不是UDP,注意一點TCP可靠安全但是需要你自己手動處理粘包問回題.你要是想學網路編程答,就需要學會分析和定製協議.我建議你先去看看TFTP的網路協議.所謂的通信就是我發請求給你,你給我應答(請求成功還是失敗).你剛學網路編程,直接是使用tcp不是很合適,你可以去看看TFTP的協議(向伺服器請求下載或者上傳文件).復雜一點的程序一搬都需要定製網路協議,tcp則還需要處理粘包問題.如果你想學,可以和我聯系,我可以發你資料→_→

⑻ 基於TCP/IP協議的文件傳輸命令是

如果你的題目沒有問題,那麼可選的是a和b,這是兩個命令,其中a,估計應該是telnet,而非專
talent,而b是文件傳輸協議屬,用於文件傳輸。
而c是一種協議,d則是internet
service
provider,例如聯通、電信等,當然不可能是命令了。
所以答案是b.

⑼ 基於tcp/ip協議的文件傳輸命令是()。A Talent B FTP C HTTP D ISP

如果你的題目來沒有問題源,那麼可選的是A和B,這是兩個命令,其中A,估計應該是TELNET,而非
Talent,而B是文件傳輸協議,用於文件傳輸。
而C是一種協議,D則是Internet Service Provider,例如聯通、電信等,當然不可能是命令了。
所以答案是B.

⑽ 求一段最簡單的java的TCP文件傳輸的代碼,多謝了。

就收ServerSocket和Socket的使用,一個監聽,一個連接,將文件寫入到輸出流中,接收端獲取輸入流,完畢之後關閉連接,監聽端自然斷開。文件接收完畢,結束。代碼原先有,現在找不到了。

閱讀全文

與tcp文件傳輸代碼相關的資料

熱點內容
大寸度愛情電影 瀏覽:213
2015年全球大數據總量 瀏覽:63
建設工程人員配置要求在哪個文件 瀏覽:157
泰國大尺度同性 瀏覽:448
手機excel怎麼保存文件怎麼打開 瀏覽:77
主角叫林白 瀏覽:395
胸很大的電影 瀏覽:899
水裡作愛的電影韓國 瀏覽:404
京東金融java薪酬 瀏覽:205
mastercam91安裝教程 瀏覽:119
ie6翻書js 瀏覽:148
干凈的電影網 瀏覽:756
不收費的電視劇網站 瀏覽:947
可投屏的影視大全免費網站 瀏覽:473
韓國電影兄弟倆是雙胞胎 瀏覽:267
cdr挑選工具快捷鍵 瀏覽:284
excel公式不同文件 瀏覽:736
主角穿越只有美女的世界 瀏覽:71
泰國女同電視劇電影 瀏覽:676
我要下載qq訂閱號 瀏覽:649

友情鏈接