博客摘录「 TCP/IP网络编程——习题答案」2023年10月30日

clnt_addr_size=sizeof(clnt_addr);  
	clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr,&clnt_addr_size);
	if(clnt_sock==-1)
		error_handling("accept() error");  
	
	for(i=0; i<3; i++)
	{
		str_len=strlen(str_arr[i])+1;
		write(clnt_sock, (char*)(&str_len), 4);
		write(clnt_sock, str_arr[i], str_len);
		
		read(clnt_sock, (char*)(&str_len), 4);
		read(clnt_sock, read_buf, str_len);
		puts(read_buf);
	}

以下是对上述代码的解释:

 

上述代码片段是一个基于TCP的服务器端代码,用于向客户端发送一组字符串,并接收客户端返回的字符串。

代码分析如下:

1. `clnt_addr_size=sizeof(clnt_addr);`:设置`clnt_addr_size`变量为`clnt_addr`结构体的大小,用于接收客户端的地址信息。

2. `clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_addr,&clnt_addr_size);`:通过`accept()`函数接受客户端的连接请求,创建一个新的套接字`clnt_sock`与客户端进行通信。`serv_sock`是服务器端的套接字文件描述符,`clnt_addr`是用于存储客户端地址信息的结构体。

3. `if(clnt_sock==-1) error_handling("accept() error");`:如果`accept()`函数返回-1,表示接受连接请求失败,输出错误信息并退出。

4. `for(i=0; i<3; i++)`:循环三次,发送和接收三组字符串。

5. `str_len=strlen(str_arr[i])+1;`:计算当前字符串`str_arr[i]`的长度,并加1,用于发送给客户端。

6. `write(clnt_sock, (char*)(&str_len), 4);`:将字符串长度`str_len`以4字节的形式发送给客户端。

7. `write(clnt_sock, str_arr[i], str_len);`:将当前字符串`str_arr[i]`发送给客户端。

8. `read(clnt_sock, (char*)(&str_len), 4);`:从客户端读取4字节的数据,即接收客户端返回的字符串长度。

9. `read(clnt_sock, read_buf, str_len);`:从客户端读取长度为`str_len`的字符串数据,并存储到`read_buf`缓冲区中。

10. `puts(read_buf);`:将接收到的字符串打印输出。

以上代码片段实现了服务器向客户端发送一组字符串,并接收客户端返回的字符串的功能。需要注意的是,代码中没有对错误进行详细处理,例如网络连接错误、读写错误等,实际应用中需要根据具体情况进行错误处理。

 注意这里两个write和两个read的参数,重点注意第二个参数:

在这里,`(char*)(&str_len)`是将整型变量`str_len`的地址强制转换为字符型指针。这是因为`write()`函数的第二个参数是一个`const void*`类型的指针,它期望接收一个指向要发送数据的缓冲区的指针。

`str_len`是一个整型变量,用于存储要发送的字符串的长度。为了满足`write()`函数的参数要求,需要将`str_len`的地址转换为字符型指针。

强制类型转换`(char*)`的作用是将整型指针转换为字符型指针,这样可以将整型变量的地址作为字符型指针传递给`write()`函数,从而发送整型变量的内容。

在这种情况下,`write()`函数会将整型变量的内容以字节的形式发送给客户端。由于整型变量的大小通常为4字节,因此使用`write()`函数发送4字节的数据。

需要注意的是,发送和接收数据时,发送方和接收方需要使用相同的数据格式和字节顺序,以确保正确地解析数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "图解TCP/IP"书签是一款非常有用的工具,它可以帮助读者更加轻松地理解TCP/IP协议的重要概念和流程。 这个书签非常简洁,但是非常实用。它可以帮助读者快速了解TCP/IP协议的工作原理,包括IP地址、端口号、数据传输等等。它还提供了很多有用的图表和表格,以帮助读者更好地理解TCP/IP协议。 此外,这个书签还包括了一些常用的命令和工具,如PING命令、TRACERT命令和NETSTAT命令等等。这些命令和工具可以帮助读者更好地了解网络连接,并识别问题,如连接错误、延迟和丢包等等。 作为一名网络技术人员,了解TCP/IP协议是非常重要的。这个书签是一个非常实用的工具,它可以加速读者的学习过程,并提供有用的参考信息。它是一个必备工具,不论是在常工作中,还是在网络安全方面,都可以起到重要作用。 ### 回答2: 《图解TCP/IP》是一本非常经典的计算机网络相关的书籍,其中介绍了TCP/IP协议的原理、结构与工作原理,是从事网络领域相关工作的人员必备的读物。 在阅读该书时,读者可以考虑使用书签,以便更好地掌握和回顾重要的内容。使用书签可以方便读者迅速地找到重要的章节和内容,也可以提高阅读的效率和质量。 在使用书签时,读者可以按照自己的需要去设置,如根据章节内容、重要性、难易程度等来进行分类。对于初学者来说,可以将书签设置在重要章节的开头和结尾处,也可以设置在难点或重点内容处,这样有利于理解和记忆相关的知识点。 总之,使用书签可以帮助读者更好地理解和掌握知识,提高学习效率和质量。但需要注意的是,在使用书签时要注意分类、标记和整理,避免混乱和遗漏。同时,也要注意保护书籍的质量和完整性,不要损坏书籍或影响其阅读。 ### 回答3: “图解TCP/IP”是一本非常经典的计算机网络技术书籍,可以说是初学者入门的必读之作。书中以图示和实例的方式介绍了TCP/IP协议族中的各种协议,包括IPTCP、UDP、HTTP、DNS等常见的协议,并深入讲解了它们的工作原理和应用场景。 对于读者来说,除了需要详实的阅读外,还需要在读的过程中经常精心制作一些好的阅读书签,以便在放下书的时候,及时记录并整理知识点。这样不仅可以方便以后的查阅,还可以让自己有一种全力学习的感觉。 制作TCP/IP书签的方法有很多,可以根据自己的喜好选用。最好的方式是在书签上写下重要的知识点和名词,例如:IP地址、子网掩码、TCP连接、ARP请求等。用不同的颜色和形状标记每个知识点,以便于整理和回顾。此外,还可以在书签上添加摘录笔记,这样在以后的学习中,就可以更方便地借鉴和复习。 最后,制作TCP/IP书签需要不断的积累和总结,同时也需要在学习过程中不断地思考和实践,通过不断的反复练习,才能掌握TCP/IP协议族的核心技术。因此,建议读者在学习的过程中,多加实践,多将学习的知识内化,才能在以后的实际应用中获得更好的表现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值