资源简介
基于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个文件信息
- 上一篇:C语言实现三自由度机械臂轨迹规划源程序
- 下一篇:将字符串转为二元组编译原理
相关资源
- CAN实验
- LCD驱动芯片ST7701SI SPI接口底层驱动配
- 显示屏操作(stm32f103c8t6(SAN))
- USB CAN Tool 源代码(LabVIEW 2011环境)
- Proteus 8.6仿真STM32F103C6
- atmega128 串口通讯(RS485.c)
- C语言嵌入式Modbus协议栈,支持主站和
- stm32 +w5500 裸机 远程升级 自动dns pi
- 永磁同步电机的FOC控制算法
- arduino I2C设备扫描并串口返回地址(
- Proteus仿真:LCD液晶屏显示.rar
- STM32 PCB封装库 全系列 全网不好找
- 基于STM32F407的W5500 tcpserver(官网例程
- 步进电机调速原理.c
- tm1650+stm32f103源码(board_tm1650.c)
- 颜色识别形状识别STM103嵌入式代码
- 基于STM32的音频信号采样与FFT分析
- 汽车电子编程规范(Unlock-MISRA C 2012)
- cheat engine 7.2源码
- 基于STM32F103C8T6主控板使用BH1750检测光
- cubeMX设计实现stm32f407上的CAN及485的通
- stm32 BootLoader程序(main.c)
- 新编Windows API参考大全.doc
- CrySearch内存搜索器源码
- com组件(共907页)
- WINcc与海康威视摄像头
- 获取pc上所有网卡信息
- WINCC-C脚本大全
- c#与西门子1500通讯
- json读取(json.c)
评论
共有 条评论