Linux平台的Socket中级应用-TCP文件传输

Linux平台的Socket中级应用-TCP文件传输

一、实验目的和任务

  1. 复习ubuntu的IP配置知识。
  2. 本实验要求掌握TCP通讯流程。
  3. 了解TCP编程的基本方法,拼包现象及文件传输的实现。
    *4. 将程序布署在开发板上,从PC主机向开发板传输文件。

二、实验设备介绍

1.软件需求: win7操作系统,VMware workstation,ubuntu12 [配置交叉编译环境]。
2.硬件需求: PC内存大于1G,硬盘空间大于20G;smart210开发板。

三、注意事项和要求

1.启动虚拟机前应首先使用"虚拟网络编辑器"配置要桥接的网卡。
2.检查网线是否连接正常。
3.TCP通信流程中,send和recv方法数据缓冲区有不对应现象。
4.开发板运行结果请用手机拍照后放入实验报告中。

四、实验内容和步骤

4.1实验室网络配置
B703主机配有两张网卡,本文称其为A网卡和B网卡,每个机位也配有两个网络插口,其中A网卡直接连接到网络插口,平时全机房的所有主机的A网卡连接到交换机,连同教师机一起组成互联互通的局域网,这个局域网的网段为192.168.200.XX,这样教师可通过中控软件进行授课广播。
B网卡上接有网线,而该网线空接摆放在台面,该网线则用来连接开发板,当开发板与PC主机B网卡用网线连通后,则PC与开发板则组成了一个极小的局域网。网络要进行实际通信还需要设置相应的网络IP地址。在这里插入图片描述

4.2 配置开发板与PC直接用网线连接的网络IP地址

首先查看win7主机网卡配置信息,如果IP配置为192.168.200.5这样的IP,这个网卡连接到了交换机,我们不去理会它,保留,则另一个网卡是连接到开发板的。在这里插入图片描述
将另一个网卡IP地址配置成192.168.1.5在这里插入图片描述
查看两个网卡的名称,弄清楚每个网卡的地址信息。很明显,虚拟机此时需要使用192.168.1.5这个网卡与开发板联通。在这里插入图片描述
下面轮到虚拟机上场了,不过此时不能打开虚拟机,要先配虚拟机的网卡。选中VMnet0这个网卡,它专门实现桥接功能,桥接的是那个192.168.1.5的网卡啊。桥接错了ubuntu与开发板是连不通的。在这里插入图片描述
在这里插入图片描述
编辑虚拟机的硬件信息,确保是桥接模式。在这里插入图片描述
启动虚拟机后,再启动ubuntu的网络连接,然后配置IP地址。在这里插入图片描述
保存配置信息后看到了这个提示信息。在这里插入图片描述
在这里插入图片描述
经过上述操作,ubuntu终于和虚拟机联通啦,这就是虚拟机拥有网络功能了。开发板与PC都网线连接构成一个极小的局域网,则将PC主机与开发板都配置为192.168.1.xx网段即可,此种情况下需配置win7主机的B网卡信息,通过串口配开发板的ip地址。因为开发板开机默认IP配置就是192.168.1.230,无需配置,双机可以连通。在这里插入图片描述
在这里插入图片描述
在网络连通的情况下,开发板可以使用多种网络协议实现与ubuntu的文件传输了,例如:tftp,http,ftp,nfs。

4.3 编译PC平台的文件发送端程序

发送文件的程序运行在pc端,在ubuntu12中使用gcc直接编译。该程序执行监听,在运行时要先于开发板的接收程序启动。
//《TCP/IP网络编程》page121  fsend.c   030.c 文件传输发送端
//本程序执行socket监听,文件发送操作
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

#define BUF_SIZE 30
void error_handling(char *message);
int main(int argc,char *argv[])
{
   
	int serv_sd,clnt_sd;
	FILE * fp;
	char buf[BUF_SIZE];
	int read_cnt;
	struct sockaddr_in serv_adr,clnt_adr;
	socklen_t clnt_adr_sz;
	
	if(argc!=2)
	{
   
		printf("Usage: %s <port>\n",argv[0]);
		exit(1); 
	}
	//读入文件
	fp=fopen("file_send.c","rb");
	//用于监听的socket资源
	serv_sd
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值