• 大小: 319KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-10
  • 语言: C/C++
  • 标签: 飞鸽传书  Linux  C  

资源简介

基于LINUX 下,C语言实现的飞鸽传输项目,是学习linux网络编程比较好的项目例子。 主要包括:TCP/IP的协议,TCP实现文件的传输,UDP消息和广播,以及网络多线程操作实现。 此外还包含一个方便调试项目的飞鸽传输WINDOWS下的应用程序。

资源截图

代码片段和文件信息

/* ************************************************************************
 *       Filename:  comm.h
 *    Description:  
 *        Version:  1.0
 *        Created:  2009年09月15日 10时41分02秒
 *       Revision:  none
 *       Compiler:  gcc
 *         Author:  YOUR NAME () 
 *        Company:  
 * ************************************************************************/
#include “comm.h“
#include “sys_info.h“
#include “user_mannager.h“
#include “file_mannager.h“
#include 


void *recv_msg(void* arg)
{
char buf[1024]=““;
struct sockaddr_in addr={AF_INET};
int addr_len = sizeof(addr);
int udp_fd = get_udp_fd();
int i = 0;
char * temp[20]={NULL};

while(1)
{
char *fileopt=NULL;
recvfrom(udp_fd buf sizeof(buf) 0 (struct sockaddr*)&addr &addr_len);
//printf(“buf=%s\n“buf);
fileopt = buf+strlen(buf)+1;
i=0;
temp[i++]=strtok(buf “:“);
while((temp[i++]=strtok(NULL“:“))!=NULL);
switch(GET_MODE(atoi(temp[4])))
{
case IPMSG_BR_ENTRY:
add_usr(temp[2]temp[3]inet_ntoa(addr.sin_addr));
sprintf(buf “1:%d:%s:%s:%d:%s“time(NULL)user()host()IPMSG_ANSENTRYuser());
sendto(udp_fd buf strlen(buf)0(struct sockaddr*)&addrsizeof(addr));
break;
case IPMSG_BR_EXIT:
del_usr(inet_ntoa(addr.sin_addr));
break;
case IPMSG_ANSENTRY:
add_usr(temp[2]temp[3]inet_ntoa(addr.sin_addr));
break;
case IPMSG_SENDMSG:
if(temp[5]!=NULL)
{
printf(“\r[%13s]:%s\n“inet_ntoa(addr.sin_addr)temp[5]);
printf(“MY_IPMSG>>“);
fflush(stdout);
}
if(atoi(temp[4])&IPMSG_SENDCHECKOPT)
{
char buf[200]=““;
sprintf(buf “1:%d:%s:%s:%d:%s“time(NULL)user()host()IPMSG_RECVMSGuser());
sendto(udp_fd buf strlen(buf)0(struct sockaddr*)&addrsizeof(addr));
}
if(atoi(temp[4])&IPMSG_FILEATTACHOPT)
{
printf(“\rrecv file!\n“);
printf(“MY_IPMSG>>“);
fflush(stdout);
//recv_file(temp[1] fileopt other_addr);
add_file(temp[1] fileopt addr);
}
break;
default:
//printf(“default\n“);
break;
}
}
return NULL;
}

void send_msg(char*argv[])
{
int uid;
IPMSG_USE * usr;
char buf[1024]=““;
int sockfd = get_udp_fd();
struct sockaddr_in addr={AF_INET};
if(argv[1]==NULL)
{
user_list();
printf(“please select a user:“);
scanf(“%d“&uid);
getchar();
}
else 
uid = atoi(argv[1]);
usr = find_user_byid(uid);
addr.sin_port=htons(2425);
addr.sin_addr.s_addr = inet_addr(usr->usr_ip);
sprintf(buf “1:%d:%s:%s:%d:“ time(NULL)user()host()IPMSG_SENDMSG|IPMSG_SENDCHECKOPT);
if(argv[2]==NULL)
{
printf(“say to %s[%s]:“usr->usr_name usr->usr_ip);
fflush(stdout);
fgets(buf+strlen(buf) sizeof(buf) stdin);
buf[strlen(buf)-1]=‘\0‘;
//printf(“buf=%s\n“buf);
}
else 
{
strcat(bufargv[2]);
}
sendto(sockfd buf strlen(buf) 0 (struct sockaddr*)&addr sizeof(addr));
}


void sendfile(char* argv[])
{
int uid;
IPMSG_USE * usr;
char filename[20]=““;
char buf[1024]=““;
int sockf

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     目录          0  2009-11-21 13:53  源码+软件

     目录          0  2009-11-21 13:51  源码+软件\v2.50a7飞鸽传输软件

     文件       2301  2007-09-05 03:39  源码+软件\v2.50a7飞鸽传输软件\ccrun.com.nfo

     文件     209408  2007-08-31 01:33  源码+软件\v2.50a7飞鸽传输软件\IPMSG.EXE

     目录          0  2009-11-21 13:51  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src

     文件      41148  2007-06-05 23:52  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\IPMSG.MAK

     文件      43008  2007-08-31 01:33  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\IPMSG.MDP

     文件      12272  2003-09-30 01:41  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\PROT-ENG.TXT

     文件      11906  2007-05-28 01:41  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\PROTOCOL.TXT

     文件       3072  2007-08-31 01:37  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\README-J.TXT

     文件       3243  2007-08-31 01:37  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\README.TXT

     目录          0  2009-11-21 13:51  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC

     文件        766  2000-01-16 02:53  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\ABSENCE.ICO

     文件       5468  2004-01-12 00:35  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\BLOWFISH.CPP

     文件       1820  2004-01-12 00:35  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\BLOWFISH.H

     文件      13428  1996-06-25 15:03  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\BLOWFISH.H2

     文件      30648  2007-06-03 18:30  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\CFG.CPP

     文件        766  2002-11-11 01:49  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\FILE.ICO

     文件        766  2002-11-11 01:49  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\FILEABS.ICO

     目录          0  2009-11-21 13:51  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\INSTALL

     文件      21849  2007-08-31 01:25  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\INSTALL\INSTALL.CPP

     文件       3768  2007-08-30 09:19  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\INSTALL\INSTALL.H

     文件      11039  2007-08-30 09:36  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\INSTALL\INSTALL.RC

     文件       1900  2007-08-30 09:36  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\INSTALL\RESOURCE.H

     文件        766  1998-08-28 03:32  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\INSTALL\SETUP.ICO

     文件       3147  2007-06-03 08:28  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\IPMSG.CPP

     文件        706  2006-08-30 22:45  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\ipmsg.exe.manifest

     文件      52240  2007-08-30 01:49  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\IPMSG.H

     文件        766  1996-06-17 00:05  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\IPMSG.ICO

     文件      61193  2007-08-30 01:52  源码+软件\v2.50a7飞鸽传输软件\ipmsg250a7src\SRC\IPMSG.RC

............此处省略54个文件信息

评论

共有 条评论