3215|2

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

tftp服务器配置 [复制链接]

配置Ubuntu tftp服务的步骤:

1、安装相关软件包:Ubuntu tftp(服务端),tftp(客户端),xinetd

sudo apt-get install tftpd tftp xinetd

2、建立配置文件
/etc/xinetd.d/下建立一个配置文件tftp
sudo vi tftp
在文件中输入以下内容:

service tftp
{socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4}
保存退出

3、建立Ubuntu tftp服务文件目录(上传文件与下载文件的位置),并且更改其权限
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R

4、重新启动服务
sudo /etc/init.d/xinetd restart
至此Ubuntu tftp服务已经安装完成了,下面可以对其进行一下测试。(假设在当前目录下有一个测试文件test.txt
$tftp 127.0.0.1                     
tftp> put test.txt
Sent 1018 bytes in 0.0 seconds
tftp> get test.txt
Received 1018 bytes in 0.1 seconds
tftp> quit

通过get命令,可以把当前目录下的test.txt文件,通过Ubuntu tftp上传到它的服务文件目录。这时,在/tftpboot下面会出现test.txt文件。通过put命令,可以从/tftpboot,下载test.txt文件。这样就验证了Ubuntu tftp服务配置的正确性。当文件上传与下载结束后,可以通过quit命令退出。严格按照以上步骤配置Ubuntu tftp服务,一般都可以成功。如果出现无法get或者put的时候,可以查看一下防火墙是否关闭。

最新回复

#include #include #include #include #include #include #include int main(int argc, char *argv[]) {     struct sockaddr_in addr;     char buf[516] = "";     int addrlen = sizeof(addr);     int sockfd;     int buflen;     int fd;     char command;     char serial = 0;     if(argc < 3)     {         printf("input error!\n");         exit(0);     }         addr.sin_family = AF_INET;     addr.sin_port   = htons(69);     addr.sin_addr.s_addr = inet_addr(argv[1]);     sockfd = socket(AF_INET,SOCK_DGRAM,0);     buflen = sprintf(buf,"%c%c%s%c%s%c",0,1,argv[2],0,"octet",0);     sendto(sockfd,buf,buflen,0,(struct sockaddr *)&addr,sizeof(addr));     fd = open(argv[2],O_WRONLY|O_CREAT,0666);     if(fd == -1)     {         perror("open");         exit(1);     }     do{         buflen = recvfrom(sockfd,buf,516,0,(struct sockaddr *)&addr,&addrlen);         if(buflen == -1)         {             perror("recvfrom");         }         command = buf[1];         if(command == 3)         {             if(serial < buf[3])             {                 serial = buf[3];                 write(fd,buf+4,buflen-4);             }                buf[1] = 4;             sendto(sockfd,buf,4,0,(struct sockaddr *)&addr,sizeof(addr));         }         else if(command == 5)         {             close(fd);             close(sockfd);             unlink(argv[2]);             printf("recv error serial!\n");                      }     }while(buflen == 516);     close(fd);     close(sockfd);     return 0; } [ 本帖最后由 于思 于 2011-9-14 17:14 编辑 ]  详情 回复 发表于 2011-9-14 17:13
点赞 关注

回复
举报

26

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
ubuntu能上网的话,还是不错的,不能上网比较悲剧.
嵌入式开发还是建议用redhat.
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

TFTP客户端

#include
#include
#include
#include
#include
#include
#include
int main(int argc, char *argv[])
{
    struct sockaddr_in addr;
    char buf[516] = "";
    int addrlen = sizeof(addr);
    int sockfd;
    int buflen;
    int fd;
    char command;
    char serial = 0;

    if(argc < 3)
    {
        printf("input error!\n");
        exit(0);
    }
   
    addr.sin_family = AF_INET;
    addr.sin_port   = htons(69);
    addr.sin_addr.s_addr = inet_addr(argv[1]);

    sockfd = socket(AF_INET,SOCK_DGRAM,0);

    buflen = sprintf(buf,"%c%c%s%c%s%c",0,1,argv[2],0,"octet",0);
    sendto(sockfd,buf,buflen,0,(struct sockaddr *)&addr,sizeof(addr));

    fd = open(argv[2],O_WRONLY|O_CREAT,0666);
    if(fd == -1)
    {
        perror("open");
        exit(1);
    }

    do{
        buflen = recvfrom(sockfd,buf,516,0,(struct sockaddr *)&addr,&addrlen);
        if(buflen == -1)
        {
            perror("recvfrom");
        }

        command = buf[1];
        if(command == 3)
        {
            if(serial < buf[3])
            {
                serial = buf[3];
                write(fd,buf+4,buflen-4);
            }   
            buf[1] = 4;
            sendto(sockfd,buf,4,0,(struct sockaddr *)&addr,sizeof(addr));
        }
        else if(command == 5)
        {
            close(fd);
            close(sockfd);
            unlink(argv[2]);
            printf("recv error serial!\n");
            
        }

    }while(buflen == 516);
    close(fd);
    close(sockfd);
    return 0;
}

[ 本帖最后由 于思 于 2011-9-14 17:14 编辑 ]
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表