91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 21KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-09
  • 語言: C/C++
  • 標簽: tftp??c語言??源碼??

資源簡介

tftp服務器c源碼,初學者非常好的參考代碼。包括客戶端和服務器端兩個文件。

資源截圖

代碼片段和文件信息

/*?tftp?client?demo?*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#include?“tftpc.h“

static?inline?char?conv_char(char?ch)
{
ch?=?ch?&?0xff;
if((ch??0x7f))
return?‘.‘;
return?ch;
}

void?dump_mem(const?char?*tip?void?*base?int?size)
{
unsigned?char?*p?=?base;
int?rows?=?size?/?16;
int?rest?=?size?%?16;
int?i?j;
printf(“[%s?len?=?%d]\n“?tip?size);
for(i?=?0;?i? printf(“0x%p:“?p);
for(j?=?0;?j? printf(“%02X?“?p[j]);
printf(“|“);
for(j?=?0;?j? printf(“%c“?conv_char(*p++));
printf(“\n“);
}
printf(“0x%p:“?p);
for(j?=?0;?j? printf(“%02X?“?p[j]);
for(;j? printf(“???“);
printf(“|“);
for(j?=?0;?j? printf(“%c“?conv_char(p[j]));
printf(“\n“);
}

size_t?read_with_select(int?fd?void?*buffer?size_t?size?int?flags?struct?sockaddr?*addr?socklen_t?*addrlen?int?tout)
{
????#include?
????fd_set?rd_fds;
????struct?timeval?timeout;
????timeout.tv_sec?=?tout;
????timeout.tv_usec?=?0;
????FD_ZERO(&rd_fds);
????FD_SET(fd&rd_fds);
????if(select(fd?+?1?&rd_fds?NULL?NULL?&timeout)?>?0)
????{
return?recvfrom(fd?buffer?size?flags?addr?addrlen);
}
return?-1;
}

size_t?send_to(int?sockfd?void?*buf?size_t?len?int?flags?struct?sockaddr?*addr?socklen_t?addrlen)
{
dump_mem(“SEND“?buf?len);
return?sendto(sockfd?buf?len?flags?addr?addrlen);
}

size_t?recv_from(int?sockfd?void?*buf?size_t?len?int?flags?struct?sockaddr?*addr?socklen_t?*addrlen?int?tout)
{
if(tout?==?0)
tout?=?20;
*addrlen?=?sizeof(struct?sockaddr);
len?=?read_with_select(sockfd?buf?len?flags?addr?addrlen?tout);
dump_mem(“RECV“?buf?len);
return?len;
}

int?make_req(char?*outbuf?int?rw?char?*filename)
{
char?*p?=?&outbuf[2];
outbuf[0]?=?0x00;
outbuf[1]?=?rw;
strcpy(p?filename);
p?+=?(strlen(filename)?+?1);
strcpy(p?“octet“);
p?+=?(strlen(“octet“)?+?1);
//----------------------------------->
//?no?options
//<-----------------------------------
return?(int)p?-?(int)outbuf;
}

int?make_ack(char?*outbuf?char?*package?int?*blknumber)
{
switch(package[1])
{
case?TFTP_OPC_DATA:
memcpy(outbuf?package?4);
outbuf[1]?=?TFTP_OPC_ACK;
*blknumber?=?ntohs(*((unsigned?short*)&package[2]));
break;
case?TFTP_OPC_OACK:
memset(outbuf?0?4);
outbuf[1]?=?TFTP_OPC_ACK;
*blknumber?=?0;
break;
case?TFTP_OPC_ERROR:
break;
}
return?package[1];
}

int?send_req(int?sockfd?char?*ip?unsigned?short?port?int?rw?char?*filename)
{
unsigned?char?buffer[512];
struct?sockaddr_in?srvAddr;
socklen_t?len;

bzero(&srvAddr?sizeof(srvAddr));
srvAddr.sin_family?=?AF_INET;
srvAddr.sin_port?=?htons(port);
inet_pton(AF_INET?ip?&srvAddr.sin_addr.s_addr);
len?=?make_req(buffer?rw?filename);
if(send_to(sockfd?buffer?len?0?(struct?sockaddr*)&srvAddr?size

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????目錄??????????0??2009-02-19?16:45??tftp服務器源碼

?????目錄??????????0??2009-02-19?16:45??tftp服務器源碼\tftp-1.0-0

?????文件???????5679??2009-02-17?14:45??tftp服務器源碼\tftp-1.0-0\tftpc-1.c

?????文件???????8370??2009-02-18?12:06??tftp服務器源碼\tftp-1.0-0\tftpc-2.c

?????文件???????1029??2009-02-17?14:19??tftp服務器源碼\tftp-1.0-0\tftpc.h

?????文件???????3493??2009-02-18?15:37??tftp服務器源碼\tftp-1.0-0\udp-broadcast.c

?????目錄??????????0??2009-02-19?16:45??tftp服務器源碼\tftp-1.0-1

?????文件????????197??2006-12-18?04:24??tftp服務器源碼\tftp-1.0-1\Makefile

?????文件???????1709??2006-12-18?04:19??tftp服務器源碼\tftp-1.0-1\tftp.h

?????文件??????27920??2006-12-18?04:19??tftp服務器源碼\tftp-1.0-1\tftpc.c

?????文件??????25001??2006-12-18?04:19??tftp服務器源碼\tftp-1.0-1\tftpd.c

-----------?---------??----------?-----??----

????????????????73398????????????????????11


評論

共有 條評論