資源簡介
基于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語言實現三自由度機械臂軌跡規劃源程序
- 下一篇:將字符串轉為二元組編譯原理
評論
共有 條評論