1.当两台计算机分别和中继器、二层交换机、三层交换、路由器相连时,请分别画出计算
机与交换设备五层参考模型;
计算机1
上图为计算机和路由器连接.。
三层交换机与上图连接相同。
二层路由器与计算机连接只经过数据链路层和物理层,中继器与计算机连接只经过物理层。
2.学习SOCKET编程,写出TCP、UDP通信流程;将实例程序两个同学一组,实现两台计算机之间通信。
并写出学习报告;
TCP通信流程
客户端服务器
UDP通信流程
客户端服务端
利用socket实现TCP,UDP通信的流程如上图所示。
SOCKET实验报告
一.实验目的
学习SOCKET编程,理解计算机通信的流程,分别实现TCP,UDP协议下两台计算机之间的通信。
Socket编程机制
客户端:
(1)客户端程序在运行后,首先需要使调用WSAStartup 函数,确保进程加载socket 应用程序所必须的环境和库文件,如Ws2_32.dll。
(2)调用函数Socket 创建SOCKET,在创建时需指定使用的网络协议、连接类型等。
(3)填充SOCKADDR 结构,指定服务端的地址、端口等。
(4)调用connect 函数连接到服务端。
(5)如果连接成功,就可以使用send 和recv 函数发送和接收数据。
(6)在数据传输完成后,可调用closesocket 函数关闭Socket。
(7)调用WSACleanup 函数释放资源。
服务端:
(1)程序在运行后,首先需要使调用WSAStartup 加载Ws2_32.dll。
(2)调用函数socket 创建用于监听的SOCKET,在创建时需指定使用的网络协议、连接类型等。
(3)1 调用bind 函数将Socket 绑定到网络地址和端口。
(4)调用listen 函数开始监听。
(5)调用accept 函数等待客户端连接。
在客户端连接后,accept 函数返回,得到连接Socket。
在accept 函数返回后,可立即再调用,以处理其他客户端的连接。
(6)得到连接Socket 后,可调用send 和recv 发送、接收数据。
(7)在数据传输完成后,可调用closesocket 函数关闭Socket。
(8)调用WSACleanup 函数释放DLL。
函数用法:
1.WSAStartup 函数的功能是加载Ws2_3
2.dll 等Socket 程序运行的环境。
其返回值用来
判断程序是否调用成功。
2.WSACleanup 函数释放Ws2_32.dll 库,函数无参数。
3.Socket 函数的功能是建立一个绑定到指定协议和传输类型的Socket。
用来指定网络地
址的类型,传输类型,传输协议。
4.send函数的功能是向连接的另一端发送数据。
参数为套接字,发送的数据,发送数据长
度。
Send成功则返回实际发送的数据,失败则返回SOCKET_ERROR.
5.recv函数的功能时是从连接的另外一端接收数据。
6.closesocket函数用于关闭socket。
7.bind函数的功能是将socket与网络地址和端口绑定起来。
8.listen的函数是将socket的状态设置为监听,以使客户端程序可以连接。
9.accept函数的功能是接收客户端的连接,accpet函数直到客户端有连接后才会返回。
将服务器端及客户端的代码中ip地址均改为另一台充当服务器端计算机的ip地址,编译运行。
将服务器端代码生成的exe文件拷贝到另一台计算机上运行。
在客户端中发送消息,在另一台计算机上查看是否能够接收到来自服务器端发送的消息。
四.实验结果
TCP通信
客户端
服务端
UDP通信客户端:
服务端
五.实验收获
以前从未了解过socket编程,所以在看到老师给的源码后,一大堆从未见过的函数看的我云里雾里。
于是开启搜索模式,看了很多博客,慢慢理清socket编程的机制以及一些函数的用法。
要实现两台计算机之间的通信,须把服务器端和客户端的地址都绑定到服务器的ip上。
但是不知道为什么两台连接的计算机必须在同一局域网下,还需要查资料继续了解。
而且socket编程中的这些函数的参数还有很多可用的选项,有时间还可以试着玩一下。