Linux网络编程实验指导书.docx

上传人:b****5 文档编号:3978230 上传时间:2022-11-26 格式:DOCX 页数:9 大小:263.46KB
下载 相关 举报
Linux网络编程实验指导书.docx_第1页
第1页 / 共9页
Linux网络编程实验指导书.docx_第2页
第2页 / 共9页
Linux网络编程实验指导书.docx_第3页
第3页 / 共9页
Linux网络编程实验指导书.docx_第4页
第4页 / 共9页
Linux网络编程实验指导书.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Linux网络编程实验指导书.docx

《Linux网络编程实验指导书.docx》由会员分享,可在线阅读,更多相关《Linux网络编程实验指导书.docx(9页珍藏版)》请在冰豆网上搜索。

Linux网络编程实验指导书.docx

Linux网络编程实验指导书

 

Linux网络编程实验指导书

 

辽宁科技大学软件学院

2015年8月30日

 

实验一TCP数据发送与接收

【实验目的】

1、熟练掌握套接字函数的使用方法。

2、应用套接字函数完成基本TCP通信,实现服务器与客户端的信息交互。

【实验学时】

4学时

【实验内容】

实现一个服务器与一个客户之间通讯。

具体功能如下:

(1)服务器端:

服务器端等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号;

循环接收客户发来的信息并在终端上显示,同时在信息前加入序号并返回给客户端;当从客户接收到bye后不再发送给各户并退出程序。

(2)客户端:

根据用户从终端输入的服务器IP地址及端口号连接到相应的服务器;

连接成功后,循环从终端输入信息,并将信息发送给服务器,再从服务器接收信息,并显示在终端上。

当从终端输入bye并发送给服务器后,程序退出。

实验二UDP数据发送与接收

【实验目的】

1、熟练掌握套接字函数的使用方法。

2、应用套接字函数完成基本UDP通讯,实现服务器与客户端的文件传送

【实验学时】

4学时

【实验内容】

要求:

(1)客户可以从服务器下载文件、或向服务器上传文件。

(2)客户可向服务器发送多种指令:

DOWNLOAD、UPLOAD、YES、NO、START、END、SHUTDOWN、CONTENT、OKDOWLOAD格式:

DOWLOAD[filename]表示从服务器下载filename文件,如果服务器存在该文件,返回YES,否则返回NO;客户接收如果是YES,可发送START表示开始下载,之后,服务器将文件传送给客户,客户接收并保存;UPLOAD格式:

UPLOAD[filename]表示向服务器上传filename文件,服务器发送NO表示拒绝接收。

服务器发送START表示开始传送,之后向服务器传输文件;END:

表示文件传送结束SHUTDOWN:

表示通讯结束,双方退出。

实验三多进程服务器

【实验目的】

1、熟练掌握进程的创建与终止方法;

2、熟练掌握进程间通信方法;

2、应用套接字函数完成多进程服务器,实现服务器与客户端的信息交互。

【实验学时】

4学时

【实验内容】

通过一个服务器实现最多5个客户之间的信息群发。

服务器显示客户的登录与退出;

客户连接后首先发送客户名称,之后发送群聊信息;

客户输入bye代表退出,在线客户能显示其他客户的登录于退出。

实现提示:

1、服务器端:

服务器进程称之为主进程,主进程创建一个转发子进程和最多5个通信子进程。

主进程与转发子进程之间:

信号量(初值5,主进程接受一个客户连接后执行P操作判断是否超过5,转发子进程有一个客户退出后执行V操作,并发消息队列标识符)

命名管道SERVER(转发子进程将可用的消息队列标识符写入管道,主进程从管道中读取消息队列标识符)

转发子进程与通信子进程之间:

命名管道CLIENT(通信子进程向命名管道写入客户端发来的消息,转发子进程从管道中读取消息并发送给对应的客户端)

消息队列(转发子进程将客户发来的信息通过消息队列发送给每个通信子进程)

(1)主进程:

从转发子进程获取一个可用的消息队列标识符;

接收客户连接请求,如果连接数超过最大连接数,向客户发送退出标志,否则发送OK标志;

每接受一个连接,创建一个通信子进程并将连接socket、消息队列标识符、客户地址传递给通信子进程。

(2)通信子进程:

创建一个子进程负责从消息队列中读取消息,发送给客户。

通信子进程负责接收客户发来信息,通过命名管道CLIENT发送给转发子进程;

若信息为用户名,附带消息队列、客户地址发送给转发子进程;

若信息为退出,终止子进程,程序结束

(3)转发子进程:

创建5个消息队列;

维护客户信息表:

消息队列、客户名、客户IP、客户端口、状态。

从命名管道CLIENT中读取通信子进程发来的消息,消息类型为:

用户名、退出及一般信息;

若为用户名,依据消息队列在更新客户信息表,状态为可用;

若为一般信息,将信息转换后写入可用客户的消息队列,等待其他通信子进程读取;

若为退出,在客户信息表中状态设为不可用,执行信号量V操作,并将可用客户的消息队列标识符写入到命名管道SERVER;

2、客户端:

根据用户从终端输入的服务器IP地址及端口号连接到相应的服务器;

连接成功后,先发送客户名称;

创建一个子进程负责接收服务器发来的信息,并显示;

主进程循环从终端输入信息,并将信息发送给服务器;

当发送给服务器为bye后,关闭子进程,程序退出。

实验四多线程服务器

【实验目的】

1、熟练掌握线程的创建与终止方法;

2、熟练掌握线程间通信同步方法;

3、应用套接字函数完成多线程服务器,实现服务器与客户端的信息交互。

【实验学时】

4学时

【实验内容】

通过一个服务器实现最多5个客户之间的信息群发。

服务器显示客户的登录与退出;

客户连接后首先发送客户名称,之后发送群聊信息;

客户输入bye代表退出,在线客户能显示其他客户的登录于退出。

实现提示:

1、服务器端:

主线程:

定义一个全局客户信息表:

socket描述符、客户名、客户IP、客户端口、状态。

主线程循环接收客户连接请求,如果连接数超过最大连接数,向客户发送EXIT标志,否则发送OK标志;

否则,将socket描述符、客户IP、客户端口号写入客户信息表,并修改状态为1表示可用;

同时创建一个通信线程并将客户索引号index传递给通信线程。

通信线程:

通信子进程负责接收客户发来信息并显示,同时查询全局客户信息表,向状态为1的客户发送接收的信息。

若信息为用户名,修改全局客户信息表中index客户的用户名name。

若信息为退出,终止线程,程序结束。

2、客户端:

根据用户从终端输入的服务器IP地址及端口号连接到相应的服务器;连接成功后,先发送客户名称;创建一个线程负责接收服务器发来的信息,并显示,当接收的长度小于等于0时终止线程;主进程循环从终端输入信息,并将信息发送给服务器;当发送给服务器为bye后,程序退出。

实验五名字与地址解析

【实验目的】

1、理解从域名到IP以及从IP到域名的解析过程;

2、熟练从域名到IP以及从IP到域名的解析方法;

【实验学时】

2学时

【实验内容】

(1)编写一段程序解析TCP中1~100号端口代表的服务;

(2)编写一段程序解析UDP中1~100号端口代表的服务;

(3)编写一段程序解析http、dns、ftp、smtp、pop3协议使用的端口号。

实验六组播通信

【实验目的】

1、熟练掌握线程的创建与终止方法;

2、应用组播技术实现组播通信。

【实验学时】

2学时

【实验内容】

应用组播通信和多线程实现多人聊天室程序。

每个用户通过组播向组播组发送信息,同时可以接收来自组播组任何成员发来的组播信息,从而实现客户之间的信息交互。

每个客户输入用户名,在每次组播发送前将用户名作为信息前缀发送。

提示:

主线程:

socket;输入组播地址、端口号、用户名;创建子线程(组播地址、端口号);设置组播发送;循环输入信息并发送,当输入bye时结束循环关闭子线程并退出组播

子线程(组播地址、端口号):

socket;加入组播组;bind;循环接收并显示

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1