QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1023|回复: 3

挖掘linux.

[复制链接]
发表于 2006-4-25 19:38:18 | 显示全部楼层 |阅读模式
最近学习网络编程,由于缺乏实验环境,所以装了vmware,然后又装了redhat as 4,现在终于就可以实验我的程序了,

没过多久问题就来了,客户程序在主机上写,服务器程序在虚拟机上写,这样调试修改比较方便.在虚拟机上些挺累人的,毕竟内存小,所以只给了虚拟机命令行界面,调试好后怎么保存我的程序呢,刚开始准备配置ftp服务,可是好像自己不会诶,算了,既然学编程就自己写一个好了,所以最初的方案是写一个传输程序,忙活了一大下午,终于出炉了,不知怎的灵光一闪,不是有自带的nc吗?看来是该利用起来的时候了.

想想自己要解决的问题,也就是把在主机中写好的源程序传到虚拟机上,于是就又写了一个简单客户端send,动动脑子,首先在虚拟机中nc -l -p 4000 > name.c ,然后主机中就
cat name.c | send ip , 搞定.

害我忙活了一大下午,看来以后应该多挖掘挖掘linux啊.


send 代码因为只是自己使用,所以写的很简单)

<code>

#include  <stdio.h>
#include  <unistd.h>
#include  <sys/socket.h>
#include  <netinet/in.h>
#include  <arpa/inet.h>



int  main(int  argc, char  *argv[])
{
    int                        sockfd;
    struct sockaddr_in        seraddr;
    int                        filefd;
    char                ch;

    sockfd = socket(AF_INET, SOCK_STREAM, 0);

    bzero(&seraddr, 0);

    seraddr.sin_family = AF_INET;
    seraddr.sin_port = htons(4000);
    inet_pton(AF_INET, argv[1], &seraddr.sin_addr);

    connect(sockfd,
            (struct sockaddr *)&seraddr,
            sizeof(seraddr));

   while((ch = getchar()) != EOF)
   {
      write(sockfd, &ch, 1);
   }

   close(sockfd);

   exit(0);
}
</code>

在主目录mkdir个bin,放进去,可以省些麻烦.

功能上就单一了一点,只能传输文本啦.不过我够用了.
如果有困境相似的朋友, 不妨试试,要传输二进制, 把EOF改了,用feof()应该能行吧.还有就是可能效率不高吧, 毕竟一个一个的传输, 再定义一个巨大的字符数组吧!

不知有没有喜欢网络编程的朋友,一起交流交流.
 楼主| 发表于 2006-4-25 20:33:27 | 显示全部楼层
为什么我的代码还是不能缩进啊?
版主呢?救命!  :-(
回复

使用道具 举报

发表于 2006-4-25 20:47:02 | 显示全部楼层
是[]
回复

使用道具 举报

 楼主| 发表于 2006-4-25 21:27:08 | 显示全部楼层
thanks
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 18:22 , Processed in 0.042435 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表