国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

TCP收發(fā)——計(jì)算機(jī)網(wǎng)絡(luò)——day02

這篇具有很好參考價(jià)值的文章主要介紹了TCP收發(fā)——計(jì)算機(jī)網(wǎng)絡(luò)——day02。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

今天主要講了TCP的收發(fā)

TCP發(fā)端步驟

①socket
②connect
③send
④close

TCP收端步驟

①socket
②bind
③listen
④accept
⑤recv
⑥clise

其函數(shù)主要有

connect

int connect(int sockfd, const struct sockaddr *addr,
                   socklen_t addrlen);
  功能:
    發(fā)送鏈接請(qǐng)求
  參數(shù):
    sockfd:套接字文件描述符
    addr:目的地址存放空間首地址
    addrlen:IP地址的大小
  返回值:
    成功返回0
    失敗返回-1

send

ssize_t send(int sockfd, const void *buf, size_t len, int flags);
  功能:
    發(fā)送數(shù)據(jù)
  參數(shù):
    sockfd:文件描述符
    buf:發(fā)送數(shù)據(jù)空間首地址
    len:發(fā)送數(shù)據(jù)的長(zhǎng)度
    flags:屬性默認(rèn)為0 
  返回值:
    成功返回實(shí)際發(fā)送字節(jié)數(shù)
    失敗返回-1

recv

ssize_t recv(int sockfd, void *buf, size_t len, int flags);
  功能:
    接收數(shù)據(jù) 
  參數(shù):
    sockfd:套接字文件描述符 
    buf:存放數(shù)據(jù)空間首地址
    len:最大接收數(shù)據(jù)的長(zhǎng)度
    flags:屬性默認(rèn)為0 
  返回值:
    成功返回實(shí)際接收字節(jié)數(shù)
    失敗返回-1 
    如果對(duì)方退出,返回0 

listen

int listen(int sockfd, int backlog);
  功能:
    監(jiān)聽(tīng)客戶端發(fā)送的連接請(qǐng)求
    該函數(shù)不會(huì)阻塞
  參數(shù):
    sockfd:套接字文件描述符
    backlog:允許等待的尚未被處理的三次握手請(qǐng)求的最大個(gè)數(shù)
  返回值:
    成功返回0 
    失敗返回-1 

accept

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
  功能:
    處理等待連接隊(duì)列中的第一個(gè)連接請(qǐng)求
    該函數(shù)具有阻塞功能(如果沒(méi)有人發(fā)送鏈接請(qǐng)求,會(huì)阻塞等待)
  參數(shù):
    socket:套接字文件描述符
    address:存放IP地址的空間首地址
    addrlen:存放IP地址大小空間首地址
  返回值:
    成功返回一個(gè)新的文件描述符
    失敗返回-1 

eg:利用TCP實(shí)現(xiàn)跨主機(jī)的文件發(fā)送

send端

#include"head.h"

int main(void)
{
	int sockfd = 0;
	FILE *fp = 0;
	int ret = 0;
	ssize_t nsize = 0;
	ssize_t nret = 0;
	char tmpbuff[4096] = {0};
	struct sockaddr_in srcaddr;
	char filename[256] = {"a.txt"};

	gets(filename);
	
	srcaddr.sin_family = AF_INET;
	srcaddr.sin_port = htons(50000);
	srcaddr.sin_addr.s_addr = inet_addr("192.168.1.152");

	sockfd = socket(AF_INET,SOCK_STREAM,0);
	if(-1 == sockfd)
	{
		perror("fail to socket");
		return -1;
	}

	ret = connect(sockfd,(struct sockaddr *)&srcaddr,sizeof(srcaddr));
	if(-1 == ret)
	{
		perror("fail to connect");
		return -1;
	}

	nsize = send(sockfd,filename,strlen(filename),0);
	if(-1 == nsize)
	{
		perror("fail to send");
		return -1;
	}

    fp = fopen(filename, "rb");
    if (fp == NULL) 
	{
        perror("fail to fopen");
        return -1;
	}


    while(1)
	{
		memset(tmpbuff,0,sizeof(tmpbuff));
		sleep(1);
		nsize = fread(tmpbuff, sizeof(char), 4096, fp);
		if(0 >= nsize)
		{
			break;
		}
			
        send(sockfd, tmpbuff,nsize, 0);
    }

	close(sockfd);
	fclose(fp);
	return 0;
}

recv端

#include"head.h"

int main(void)
{
	FILE *file = NULL;
	ssize_t nsize = 0;
	ssize_t nret = 0;
	char name[20] = {0};
	char tmpbuff[4096] = {0};
	int sockfd = 0;
	int recfd = 0;
	int ret = 0;
	struct sockaddr_in recaddr;


	recaddr.sin_family = AF_INET;
	recaddr.sin_port = htons(50000);
	recaddr.sin_addr.s_addr = INADDR_ANY;

	sockfd = socket(AF_INET,SOCK_STREAM,0);
	if(-1 == sockfd)
	{
		perror("fail to socket");
		return -1;
	}

	ret = bind(sockfd,(struct sockaddr *)&recaddr,sizeof(recaddr));
	if(-1 == ret)
	{
		perror("fail to bind");
		return -1;
	}

	ret = listen(sockfd,10);
	if(-1 == ret)
	{
		perror("fail to listen");
		return -1;
	}

	recfd = accept(sockfd,NULL,NULL);
	if(-1 == recfd)
	{
		perror("fail to accept");
		return -1;
	}

	nret = recv(recfd,name,sizeof(name),0);
	if(-1 == nret)
	{
		perror("fail to recv");
		return -1;
	}

	file = fopen(name,"wb");

	 while ((nsize = recv(recfd, tmpbuff, sizeof(tmpbuff), 0)) > 0)
    {
        if (fwrite(tmpbuff, sizeof(char), nsize, file) < nsize)
        {
            perror("fail to write file");
            fclose(file);
            close(recfd);
            close(sockfd);
            return -1;
        }
    }

	close(recfd);
	fclose(file);
	close(sockfd);

	return 0;
}

結(jié)果:
TCP收發(fā)——計(jì)算機(jī)網(wǎng)絡(luò)——day02,# Network,tcp/ip,計(jì)算機(jī)網(wǎng)絡(luò),網(wǎng)絡(luò),linux,c語(yǔ)言
以上就是今天內(nèi)容!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-838489.html

到了這里,關(guān)于TCP收發(fā)——計(jì)算機(jī)網(wǎng)絡(luò)——day02的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 計(jì)算機(jī)網(wǎng)絡(luò)-TCP協(xié)議

    計(jì)算機(jī)網(wǎng)絡(luò)-TCP協(xié)議

    TCP被稱(chēng)為面向連接的,因?yàn)樵趹?yīng)用程序開(kāi)始互傳數(shù)據(jù)之前,TCP會(huì)先建立一個(gè)連接,該連接的建立涉及到 三次“握手 ”。 TCP的連接不是一條真實(shí)存在的電路,而是一條邏輯鏈接 ,其共同狀態(tài)僅保留在兩個(gè)通信端系統(tǒng)的TCP程序中。 TCP連接也是點(diǎn)對(duì)點(diǎn)的,即TCP連接只能存在于一

    2024年02月08日
    瀏覽(36)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】TCP協(xié)議

    【計(jì)算機(jī)網(wǎng)絡(luò)】TCP協(xié)議

    實(shí)驗(yàn)?zāi)康?應(yīng)用所學(xué)知識(shí): 1. 熟悉 TCP 的協(xié)議格式。 2. 理解 TCP 對(duì)序列號(hào)和確認(rèn)號(hào)的使用。 3. 理解 TCP 的流量控制算法和擁塞控制算法。 實(shí)驗(yàn)步驟與結(jié)果 1.任務(wù)一: 將Alice.txt上傳到服務(wù)器: 使用wireshark捕獲數(shù)據(jù)包,看到計(jì)算機(jī)和gaia.cs.umass.edu之間的一系列 TCP 和 HTTP 通信,包

    2023年04月20日
    瀏覽(22)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】簡(jiǎn)易TCP網(wǎng)絡(luò)小程序

    【計(jì)算機(jī)網(wǎng)絡(luò)】簡(jiǎn)易TCP網(wǎng)絡(luò)小程序

    1.1.1 服務(wù)端創(chuàng)建套接字 我們將TCP服務(wù)器封裝成一個(gè)類(lèi),當(dāng)我們定義出一個(gè)服務(wù)器對(duì)象后需要馬上對(duì)服務(wù)器進(jìn)行初始化,而初始化TCP服務(wù)器要做的第一件事就是創(chuàng)建套接字。 TCP服務(wù)器在調(diào)用socket函數(shù)創(chuàng)建套接字時(shí),參數(shù)設(shè)置如下: 協(xié)議家族選擇 AF_INET ,因?yàn)槲覀円M(jìn)行的是網(wǎng)

    2024年02月16日
    瀏覽(24)
  • 05.計(jì)算機(jī)網(wǎng)絡(luò)——TCP協(xié)議

    05.計(jì)算機(jī)網(wǎng)絡(luò)——TCP協(xié)議

    TCP協(xié)議——TCP全稱(chēng)為 “ 傳輸控制協(xié)議 (Transmission Control Protocol)”,對(duì)數(shù)據(jù)的傳輸進(jìn)行一個(gè)詳細(xì)的控制。 源/目的端口號(hào): 表示數(shù)據(jù)是從哪個(gè)進(jìn)程來(lái), 到哪個(gè)進(jìn)程去; 32位序號(hào)/32位確認(rèn)號(hào): 用來(lái)支持確認(rèn)應(yīng)答和按序到達(dá) 4位TCP報(bào)頭長(zhǎng)度: 表示該TCP報(bào)頭有多少個(gè)4字節(jié)大小; 6位標(biāo)志位

    2024年02月16日
    瀏覽(21)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)篇】TCP協(xié)議

    【計(jì)算機(jī)網(wǎng)絡(luò)篇】TCP協(xié)議

    ?作者簡(jiǎn)介:大家好,我是小楊 ??個(gè)人主頁(yè):「小楊」的csdn博客 ??希望大家多多支持??一起進(jìn)步呀! TCP(Transmission Control Protocol)是一種在計(jì)算機(jī)網(wǎng)絡(luò)中廣泛使用的傳輸層協(xié)議,用于在網(wǎng)絡(luò)上可靠地傳輸數(shù)據(jù)。 TCP 提供了可靠的、面向連接的通信,并負(fù)責(zé)數(shù)據(jù)的劃分、排

    2024年02月11日
    瀏覽(23)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)】TCP協(xié)議詳解

    【計(jì)算機(jī)網(wǎng)絡(luò)】TCP協(xié)議詳解

    目錄 1. TCP協(xié)議頭部格式 2. TCP協(xié)議原理? 2.1 可靠傳輸機(jī)制 2.1.1 確認(rèn)應(yīng)答機(jī)制 2.1.2 超時(shí)重傳機(jī)制 2.1.3 連接管理機(jī)制(三次握手,四次揮手) 2.1.4 流量控制 2.1.5 擁塞控制? 2.2 效率機(jī)制? 2.2.1 滑動(dòng)窗口? 2.2.2 延遲應(yīng)答? 2.2.3 捎帶應(yīng)答? 3. 粘包問(wèn)題? 4. TCP的異常情況? 5. TCP協(xié)議特

    2024年01月18日
    瀏覽(20)
  • 計(jì)算機(jī)網(wǎng)絡(luò)(3) --- 網(wǎng)絡(luò)套接字TCP

    計(jì)算機(jī)網(wǎng)絡(luò)(3) --- 網(wǎng)絡(luò)套接字TCP

    計(jì)算機(jī)網(wǎng)絡(luò)(2) --- 網(wǎng)絡(luò)套接字UDP_哈里沃克的博客-CSDN博客 https://blog.csdn.net/m0_63488627/article/details/131977544?spm=1001.2014.3001.5501 目錄 1.TCP 1.服務(wù)端接口介紹 1.listen狀態(tài) 2.accept獲取鏈接 2.客戶端接口介紹 2.TCP的服務(wù)器和客戶端接口實(shí)現(xiàn) 1.服務(wù)端 1.成員函數(shù) 2.接口 start()實(shí)現(xiàn)方式 1.單

    2024年02月14日
    瀏覽(37)
  • 計(jì)算機(jī)網(wǎng)絡(luò)——TCP/IP網(wǎng)絡(luò)層次模型

    計(jì)算機(jī)網(wǎng)絡(luò)——TCP/IP網(wǎng)絡(luò)層次模型

    我們上一次了解了OSI的網(wǎng)絡(luò)層次模型,如果還沒(méi)有看過(guò)上一次OSI網(wǎng)絡(luò)模型的可以點(diǎn)擊這里: https://blog.csdn.net/qq_67693066/article/details/136597950 我們今天來(lái)看實(shí)際在生活中使用更廣的 TCP/IP網(wǎng)絡(luò)模型 : TCP/IP網(wǎng)絡(luò)模型的起源可以追溯到20世紀(jì)60年代末和70年代初,當(dāng)時(shí)美國(guó)國(guó)防部的高級(jí)

    2024年03月17日
    瀏覽(42)
  • 計(jì)算機(jī)網(wǎng)絡(luò)學(xué)習(xí)first day

    計(jì)算機(jī)網(wǎng)絡(luò)學(xué)習(xí)first day

    In the first day. ?首先,我們要先有清晰地學(xué)習(xí)思路,然后介紹計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展及在信息時(shí)代的各類(lèi)應(yīng)用及帶來(lái)的一些負(fù)面問(wèn)題。然后是對(duì)因特網(wǎng)進(jìn)行概述,包括網(wǎng)絡(luò),互聯(lián)網(wǎng)和因特網(wǎng)的相關(guān)概念,因特網(wǎng)發(fā)展的三個(gè)歷史階段,因特網(wǎng)的標(biāo)準(zhǔn)化和管理機(jī)構(gòu),因特網(wǎng)的組成(邊

    2024年01月19日
    瀏覽(15)
  • 【計(jì)算機(jī)網(wǎng)絡(luò)-傳輸層】TCP 協(xié)議

    【計(jì)算機(jī)網(wǎng)絡(luò)-傳輸層】TCP 協(xié)議

    端到端通信 :提供應(yīng)用進(jìn)程間的端到端通信(邏輯通信)。因此傳輸層又稱(chēng)為端到端協(xié)議。 差錯(cuò)檢測(cè) :對(duì)首部和數(shù)據(jù)部分進(jìn)行檢測(cè)。 兩種協(xié)議 :面向連接的 TCP、無(wú)連接的 UDP。 復(fù)用和分用 : 概念 解釋 傳輸層 TCP 復(fù)用 發(fā)送方的部分應(yīng)用進(jìn)程的報(bào)文在傳輸層使用 TCP 協(xié)議進(jìn)

    2023年04月13日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包