tcp/ip网络编程习题2(代码片段)

liqaing1992 liqaing1992     2022-12-19     797

关键词:

1. 什么是协议?在收发数据中定义协议有何意义?

协议是对话中使用的通信规则.定义协议可让计算机进行正确无误的对话.

2. 面向连接的TCP套接字传输特性有3点,请分别说明?

  1. 可靠性,传输的过程数据不会丢失
  2. 字节流,按序传输数据,不存在数据边界
  3. 面向连接,双方必须建立连接后,才可以进行数据传递

3. 下面哪些是面向消息的套接字特性?

  • 传输数据可能丢失 ***
  • 没有数据边界
  • 以快速传输为目标 ***
  • 不限制每次传递数据的大小
  • 与面向连接的数据不同,不存在连接的概念 ***

4. 下列数据适合用哪类套接字传输?

  • 演唱会现在直播的多媒体数据 --- (UDP,传输速度要快,对数据丢失有一定容忍度)
  • 某人压缩过的文本文件 --- (TCP,对数据丢失零容忍,使用具有可靠性的TCP传输方式)
  • 网上银行用户与银行之间的数据传递 --- (TCP)

5. 何种类型的套接字不存在数据边界?,这类套接字接受数据时需要注意什么?

TCP套接字不存在数据边界,套接字接受数据时会首先将数据存入由字节数组构成的缓冲区中,

如果读取速度小于写入速度,则缓冲区可能会被填满,此时传输端的套接字会停止传输,以防止数据丢失

6. 更改程序使server端多次传输数据,client端调用一次read函数进行读取

技术分享图片
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 #include <string.h>
 5 #include <arpa/inet.h>
 6 #include <sys/types.h>
 7 #include <sys/socket.h>
 8 
 9 void error_exit(char* message);
10 
11 int main(int argc, char* argv[])
12 
13     int serv_sock, clnt_sock;
14     struct sockaddr_in serv_addr, clnt_addr;
15     socklen_t clnt_addr_size;
16     char message[] = "hello,world";
17     int i = 0;
18 
19     if(argc != 2)
20     
21         printf("Usage: %s <port>
", argv[0]);
22         getchar();
23         exit(1);
24     
25 
26     serv_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
27     if(serv_sock == -1)
28         error_exit("serv_sock() error!
");
29     
30     memset(&serv_addr, 0, sizeof(serv_addr));
31     serv_addr.sin_family = AF_INET;
32     serv_addr.sin_port = htons(atoi(argv[1]));
33     serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
34 
35     if(bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1)
36         error_exit("bind() error!
");
37     
38     if(listen(serv_sock, 5) == -1)
39         error_exit("listen() error!
");
40     
41     clnt_addr_size = sizeof(clnt_addr);
42     if((clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size)) == -1)
43         error_exit("accept() error!
");
44     
45     while(write(clnt_sock, &message[i++], 1) != -1);
46 
47     close(serv_sock);
48     close(clnt_sock);
49     return 0;
50 ;
51 
52 void error_exit(char* message)
53 
54     fputs(message, stderr);
55     fputc(
, stderr);
56     exit(1);
57 
serv_scok

 

技术分享图片
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 #include <string.h>
 5 #include <arpa/inet.h>
 6 #include <sys/types.h>
 7 #include <sys/socket.h>
 8 
 9 #define BUF_SIZE 1024
10 
11 void error_exit(char* message);
12 
13 int main(int argc, char* argv[])
14 
15     int sock;
16     struct sockaddr_in sock_addr;
17     char buf[BUF_SIZE];
18     int str_len;
19 
20     if(argc != 3)
21     
22         printf("Usage: %s <ip> <port>
", argv[0]);
23         getchar();
24         exit(1);
25     
26 
27     sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
28     if(sock == -1)
29         error_exit("socket() error!
");
30     
31     memset(&sock_addr, 0, sizeof(sock_addr));
32     sock_addr.sin_family = AF_INET;
33     sock_addr.sin_port = htons(atoi(argv[2]));
34     sock_addr.sin_addr.s_addr = inet_addr(argv[1]);
35 
36     if(connect(sock, (struct sockaddr*)&sock_addr, sizeof(sock_addr)) == -1)
37         error_exit("connect() error!
");
38     
39     sleep(2);
40 
41     str_len = read(sock, &buf, BUF_SIZE-1);
42     if(str_len == -1)
43         error_exit("read() error!
");
44     
45     printf("Message From Server: %s
", buf);
46     close(sock);
47 
48     return 0;
49 
50 
51 void error_exit(char* message)
52 
53     fputs(message, stderr);
54     fputc(
, stderr);
55     getchar();
56     exit(1);
57 
clnt_sock

 

王道计算机网络网络层(代码片段)

...网划分与子网掩码❓1、子网划分2、子网掩码3、子网掩码习题4、使用子网时分组的转发3、无分类 查看详情

计算机网络协议复习——tcp/ip。。。(代码片段)

计算机网络基础网络协议1.OSI七层模型2.TCP/IP四层模型3.传输层端口号TCP协议1.确认应答ACK机制(保障TCP稳定的核心机制)2.超时重传3.连接管理4.滑动窗口5.流量控制6.拥塞控制7.延迟应答8.捎带应答9.面向字节流10.沾包/半包... 查看详情

计算机网络协议复习——tcp/ip。。。(代码片段)

计算机网络基础网络协议1.OSI七层模型2.TCP/IP四层模型3.传输层端口号TCP协议1.确认应答ACK机制(保障TCP稳定的核心机制)2.超时重传3.连接管理4.滑动窗口5.流量控制6.拥塞控制7.延迟应答8.捎带应答9.面向字节流10.沾包/半包... 查看详情

tcp/ip协议(代码片段)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。  座右铭:低头赶路,敬事如仪个人主页:网络豆的主页​​​​​​目录 前言一.什么是TCP/IP​编辑二.什么是协议1.三要素2.协议与标... 查看详情

《计算机网络》期末复习(代码片段)

...自己查阅。一下内容有王道考研课件截图、本人学校课堂习题、以及同学们分享的笔记。物理层OSI与TCP/IP协议栈协议网络中对等实体数据交换而建立的规则、约定接口上层使用下层服务的入口服务下层为相邻上层提供的功能调用... 查看详情

python网络编程tcp/udp(代码片段)

目录网络编程1.网络编程基础知识1.1什么是网络1.2网络协议OSI7层模型TCP/IP模型1.3 LinuxWindows命令行查看网络信息1.4 IP地址1.4.1概念:1.4.2IP地址分类:1.5 端口 1.5.1概念1.6服务器和客户端1.6.1服务端(Server):1.6... 查看详情

网络协议和管理(代码片段)

3TCP/IP协议栈3.1TCP/IP标准3.1.1TCP/IP介绍TransmissionControlProtocol/InternetProtocol传输控制协议/因特网互联协议TCP/IP是一个ProtocolStack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议3.1.2TCP/IP分层共定义了四层,和OSI参考模型的... 查看详情

软件重点9网络基础(代码片段)

软件重点9网络基础一、网络基础知识1.基本概念2.网络传输介质(1)有线传输介质(2)无线传输介质二、OSI和TCP/IP协议簇1.OSI参考模型2.TCP/IP协议簇3.重要的协议三、IP地址与子网划分1.IP构成与分类2.子网划分3.特... 查看详情

07.网络编程-1.网络基础(代码片段)

1、知识点tcp/ip协议介绍ip地址的分类端口、端口号(重点)socket(重点)udp通信(重点、难点)udp应用-echo服务器、聊天室、多线程模拟QQ聊天2、网络通信概述网络就是一种辅助双方或者多方能够连接在一起的工具如果没有网络可想单机... 查看详情

网络编程(代码片段)

1.socket概念socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合... 查看详情

2.tcp/ip网咯七层模型(代码片段)

互联网协议OSI七层模型ip+mac可以标识全世界范围内独一无二的一台计算机的位置port可以标识一台计算机之上唯一的一个基于网络通信的应用软件ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)一、物理层... 查看详情

网络编程tcp/ip协议-----多进程多线程服务器(代码片段)

1、前言上一篇已经实现了服务器端与客户端之间最基础通信,但存在一些问题,最大的问题是上篇中一个服务器端只能连接一个客户端,如何让一个服务器端可以连接多个客户端呢?利用多进程多线程实现。2、... 查看详情

计算机网络复习重点(代码片段)

...TCP/IP模型ISO/OSI参考模型协议数据单元DPU名词缩写解释练习题第二章应用层概念与应用1、应用层协议原理C/S与P2PP2P(对等)体系结构进程通信2、互联网上的QoS(服务质量)要求3、HTTPHTTP使用的是客户端/服务器模型HTTP使用TCP... 查看详情

计算机网络协议复习——tcp/ip。。。(代码片段)

计算机网络基础网络协议1.OSI七层模型2.TCP/IP四层模型3.传输层端口号TCP协议1.确认应答ACK机制(保障TCP稳定的核心机制)2.超时重传3.连接管理4.滑动窗口5.流量控制6.拥塞控制7.延迟应答8.捎带应答9.面向字节流10.沾包/半包... 查看详情

计算机网络面试题汇总(代码片段)

文章目录TCP/IP体系结构1.TCP/IP的四层模型指的是哪些?2.OSI的七层模型五层模型的作用:(字节跳动)TCP、UDP的区别如何在应用层保证udp可靠传输TCP流量控制TCP拥塞控制网络拥塞的原因主要有以下三点:拥塞控制的目的:拥塞控... 查看详情

socket网络编程(代码片段)

1.osi(OpenSystemInterconnect)  开放式系统互联7层模型2.TCP/IP五层协议和OSI的七层协议对应关系如下。 3.tcp/ip与http的差别http协议的报文要通过tcp/ip来传输4.什么是socket?socket的原意是“插座”,在计算机通信领域,socket被翻... 查看详情

初识socket(代码片段)

初始socket网络编程概念要想理解socket,就要先来理解TCP,UDP协议。TCP/IP(TransmissionControlProtocol/InternetProtocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,TCP/IP是TCP和IP协议的合称,TCP/I... 查看详情

javaee初阶第六节.网络原理tcp/ip协议(代码片段)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、TCP/IP协议五层协议栈;1.1应用层协议;二、传输层协议;2.1UDP协议;2.2TCP协议;      2.2.3序号2.3UDP和TCP... 查看详情