c++语言 tcp例子,C++中TCP通信实现文件传输
作為Computer networks課程的一個(gè)project,我們需要實(shí)現(xiàn)用TCP在mininet中client和server的相互通信,需要能夠傳輸文本文件,binary file 和image file。整個(gè)project的目的還是比較明確的。我主要列出了一下幾個(gè)問題,需要在代碼中實(shí)現(xiàn)。
1. 實(shí)現(xiàn)main函數(shù)的接口
因?yàn)閏lient和server 需要的參數(shù)需要通過命令行輸入,所以需要用getoptlong函數(shù)來實(shí)現(xiàn)。
2. 實(shí)現(xiàn)socket programming中的功能
在這個(gè)項(xiàng)目中提供了socket programming的接口,按照需要設(shè)置即可。
3. 連續(xù)send造成的粘包問題
由于TCP擁有優(yōu)化算法,可以將多個(gè)send的數(shù)據(jù)被一個(gè)recv收到,所以造成粘包問題。本項(xiàng)目中會(huì)要求先發(fā)送文件長(zhǎng)度,再發(fā)送文件,連續(xù)發(fā)送造成文件長(zhǎng)度和文件粘合在一起,造成無法讀出文件。解決辦法是加入sleep()函數(shù)在兩次send之間。這樣就能將兩次send分開了。
4. 大文件的接收問題
大文件的接受容易由于buffer長(zhǎng)度的限制,造成丟失。因此需要設(shè)置一個(gè)MAX_MESSAGE_SIZE。分成多次完成接收。本來想要在send端也多次發(fā)送,效果不好。
5. 文件的讀寫
由于文件的類型不確定,打開文件都需要用binary格式,讀寫的時(shí)候一定要注意,用read()和write()函數(shù),千萬不要<>,因?yàn)楹笠环N方式?jīng)]法確定文件類型。
大概就是這些,因?yàn)檎n程沒有結(jié)束,暫時(shí)就不放代碼了,以后補(bǔ)齊。
C++中TCP通信實(shí)現(xiàn)文件傳輸
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的c++语言 tcp例子,C++中TCP通信实现文件传输的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML+CSS+JS实现 ❤️touc
- 下一篇: java制作扫雷游戏中埋雷的难点_月薪3