姓名: 学院:
实验时间:
计算机网络实验
题目:Socket编程
实验1 基于UDP的Socket编程 实验2 基于TCP的Socket编程
学号:
年级:
目录
一、实验内容: ............................................................................................................................... 3
实验1 基于UDP的Socket编程 ........................................................................................... 3 实验2 基于TCP的Socket编程 ............................................................................................ 3 二、 程序设计 ................................................................................................................................. 3
1 基于UDP的Socket编程 .................................................................................................. 3
1.1 实验原理:基于UDP协议的无连接C/S的工作流程 .......................................... 3 1.2 实现方案和实验结果 ................................................................................................ 4 1.2.1 方案1:Linux上两个进程间的通信 ................................................................... 4
方案1实现方案 ....................................................................................................... 4 方案1实验结果 ....................................................................................................... 4 1.2.2 方案2:Windows主机(client)和Linux虚拟机(server)之间的进程通信 6
方案2实现方案 ....................................................................................................... 6 方案2实验结果 ....................................................................................................... 6
2 基于TCP的Socket编程................................................................................................... 7
2.1 实验原理:基于TCP协议的面向C/S的工作流程 ............................................... 7 2.2 实现方案 .................................................................................................................... 8 2.3 实验结果 .................................................................................................................... 9
三、讨论与心得 ............................................................................................................................. 10 四、源代码..................................................................................................................................... 12
一、实验内容:
本单元实验包括的实验项目主要是UDP Socket编程和TCP Socket编程。本单元实验的主要目的是希望通过本单元实验,让学员掌握Socket编程方法,同时通过本单元实验让学生掌握如何开发基于TCP/IP协议的网络应用。
实验1 基于UDP的Socket编程
? 实验目的:通过本实验使学员了解和掌握编写基于UDP协议的网络应用程序。
? 实验内容:编写基于UDP协议网络聊天程序,要求发送程序和接收程序能够接收键盘
输入并彼此之间相互发送数据。 ? 实验步骤:
1.编写server端程序; 2.编写client端程序;
3.client程序与server程序联调; 4.client程序与server程序相互通信。
实验2 基于TCP的Socket编程
? 实验目的:通过本实验使学员了解和掌握编写基于TCP协议的网络应用程序。
? 实验内容:编写基于TCP协议网络聊天程序,要求发送程序和接收程序能够接收键盘
输入并彼此之间相互发送数据。 ? 实验步骤同UDP实验。
二、程序设计
1 基于UDP的Socket编程
1.1 实验原理:基于UDP协议的无连接C/S的工作流程
在server端,server首先启动,调用socket( )创建套接字,然后调用bind( )绑定server的地址(IP+port),调用recvfrom( )等待接收数据。
在client端,先调用socket()创建套接字,调用sendto( )向server发送数据。
server接收到client发来数据后,调用sendto( )向client发送应答数据,client调用recv接收server发来的应答数据。数据传输结束,server和client通过调用close( )关闭套接字。 原理图如图1。
图1 UDP通信原理图
1.2 实现方案和实验结果
1.2.1 方案1:Linux上两个进程间的通信
方案1实现方案
? server端:
首先调用socket函数创建一个socket,然后调用bind函数将其与本机地址以及一个本地端口号绑定,用recvfrom函数接收到一个client端的消息后,用printf打印出来,server从标准输入设备中取得一行字符串后,调用sendto函数发送给client端。最后用close关闭该socket。
? client机端:
首先调用socket函数创建一个socket,初始化server地址及端口号(实际上就是本机),从标准输入设备中取得字符串,用sendto传送给server端,然后用recv函数接收server端发来的字符串,用printf打印出来。最后用close关闭该socket。 源代码见附录。
方案1实验结果
server和client通信截图
图2 UDPserver
图3 UDPClient