资源简介
本文件传输系统采用TCP协议进行通信,实现了windows与linux通信,打破了只能在windows下传输文件的弊端,本程序的编写对通信编程新手有很大的帮助作用,本系统目前只支持windows向linux发送多种类型文件,大文件传输可能存在丢帧现象,建议传输20M异类文件
代码片段和文件信息
// Module Name: tcp_rev_server.c
// Compile:
// gcc -o tcp_rev_server tcp_rev_server.c
// Command Line Options:
// tcp_rev_server.exe
// NOTE: There are no command parameters.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define UCHAR unsigned char
struct BuffHeader
{
char FileName[50];//文件名
int FileSize;//文件总大小8
UCHAR FileTransmitPieceWiseFlag;//文件传送分片标志,0-未分片 大于0-分片
UCHAR FileNumbers;//当前发送数据编号
UCHAR FileTransmitOverFlag;//发送文件结束标志,1-结束,0-未结束
}FileHead*pFileHead;
void main(int argc char ** argv)
{
FILE *FileSave;//为接受文件打开一个文件
int ListeningSocket;//监听接点
int NewConnection;//新的连接接点
struct sockaddr_in ServerAddr;
struct sockaddr_in ClientAddr;
int ClientAddrLen;
char DataBuffer[65535];
int Port;
int Ret;
int FileHeadSize = sizeof(FileHead);
int FileRecvSize;
int FileTotalSize;
if(argc < 2)
{
printf(“运行方式: 应用程序 端口号\n“);
return ;
}
Port = atoi(argv[1]);
memset(DataBuffer 0 sizeof(DataBuffer));
if((ListeningSocket = socket(AF_INET SOCK_STREAM IPPROTO_TCP)) == -1)//创建监听套结字
{
printf(“socket failed with error \n“);
return;
}
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(Port);
ServerAddr.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(ListeningSocket (struct sockaddr_in *)&ServerAddr sizeof(ServerAddr)) == -1)//邦定端口
{
printf(“bind failed with error \n“);
close(ListeningSocket);
return;
}
if(listen(ListeningSocket 10) == -1)//在端口上进行监听
{
printf(“listen failed with error \n“);
close(ListeningSocket);
return;
}
printf(“We are awaiting a connection on port %d......\n“ Port);
while(1)
{
if(( NewConnection = accept(ListeningSocket (struct sockaddr_in*) &ClientAddr &ClientAddrLen)) == -1)//等待一个连接
{
printf(“accept failed with error \n“);
close(ListeningSocket);
continue;
}
printf(“We successfully got a connection from %s:%d.\n“inet_ntoa(ClientAddr.sin_addr) ntohs(ClientAddr.sin_port));
printf(“We are waiting to receive data...\n“);
if(!fork())//创建一个子进程接受和发送信息
{
FileRecvSize = 0;
while(1)
{
memset(DataBuffer 0 sizeof(DataBuffer));
Ret = recv(NewConnection DataBuffer sizeof(DataBuffer) 0);
if(Ret == FileHeadSize)
{
memcpy(&FileHead DataBuffer FileHeadSize);
if((FileHead.FileTransmitPieceWiseFlag == 1) && (FileHead.FileNumbers == 0) && (FileHead.FileTransmitOverFlag == 0))
{
FileTotalSize = FileHead.FileSize;
printf(“File Name :%s File Length :%d\n“
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 48 2010-08-13 18:03 FileTransmitSystem\readMe.txt
文件 5914 2010-08-01 16:04 FileTransmitSystem\FileTransfers_windows\FileTransfers.rc
文件 9174 2010-08-13 17:34 FileTransmitSystem\FileTransfers_windows\FileTransfersDlg.cpp
文件 21356 2010-08-13 17:40 FileTransmitSystem\FileTransfers_windows\FileTransfers.aps
文件 1509 2010-08-13 17:40 FileTransmitSystem\FileTransfers_windows\FileTransfers.clw
文件 3705 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\ReadMe.txt
文件 1401 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\FileTransfers.h
文件 2255 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\FileTransfers.cpp
文件 1102 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\StdAfx.h
文件 215 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\StdAfx.cpp
文件 4285 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\FileTransfers.dsp
文件 532 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\FileTransfers.dsw
文件 74752 2010-08-13 17:40 FileTransmitSystem\FileTransfers_windows\FileTransfers.ncb
文件 260 2010-08-13 17:33 FileTransmitSystem\FileTransfers_windows\FileTransfers.plg
文件 179 2010-07-26 10:16 FileTransmitSystem\FileTransfers_windows\resource.hm
文件 1785 2010-07-26 14:29 FileTransmitSystem\FileTransfers_windows\CFileDialog的用法.txt
文件 966 2010-07-26 14:37 FileTransmitSystem\FileTransfers_windows\Resource.h
文件 1516 2010-07-27 10:50 FileTransmitSystem\FileTransfers_windows\FileTransfersDlg.h
文件 48640 2010-08-13 17:40 FileTransmitSystem\FileTransfers_windows\FileTransfers.opt
文件 405 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\res\FileTransfers.rc2
文件 1078 2010-07-25 16:09 FileTransmitSystem\FileTransfers_windows\res\FileTransfers.ico
..A.SH. 3584 2010-08-07 15:41 FileTransmitSystem\FileTransfers_windows\res\Thumbs.db
文件 2948 2010-08-13 11:21 FileTransmitSystem\FileTransfers_windows\Debug\FileTransfers.res
文件 205824 2010-08-13 17:33 FileTransmitSystem\FileTransfers_windows\Debug\vc60.idb
文件 5699020 2010-08-13 11:21 FileTransmitSystem\FileTransfers_windows\Debug\FileTransfers.pch
文件 364544 2010-08-13 17:33 FileTransmitSystem\FileTransfers_windows\Debug\vc60.pdb
文件 106806 2010-08-13 11:21 FileTransmitSystem\FileTransfers_windows\Debug\StdAfx.obj
文件 14640 2010-08-13 11:21 FileTransmitSystem\FileTransfers_windows\Debug\FileTransfers.obj
文件 288292 2010-08-13 17:33 FileTransmitSystem\FileTransfers_windows\Debug\FileTransfers.ilk
文件 114757 2010-08-13 17:33 FileTransmitSystem\FileTransfers_windows\Debug\FileTransfers.exe
............此处省略12个文件信息
相关资源
- sokit TCP/UDP 数据包收发测试(调试)工
- 简单明了的网络数据封包解包
- STM32基于ENC28J60的TCP通信源码
- Labwindow_cvi TCP UDP通信例程
- SocketTool4.zip
- TCP.IP卷一第2版英文版
- RFCTCP/IP网络协议文档
- linux内核tcp/ip协议栈分析PDF
- rtsp视频组帧(tcp和udp)
- weblogic websocket
- zcu102用lwip实现TCP传输
- websocket
- SuperSocket1.6中文文档PDF版
- Qt的TcpIp客户端和服务端程序
- 数控五轴机床调试步骤
- 基于spring websocket实现广播及点对点推
- SuperSocket_demo
- 手机采集摄像头视频socket实时传播 由
- tomcat实现websocket聊天室
- G-Sockets 2.5
- 基于TCP的聊天程序228052
- PowerTCP Telnet for .NET v1.0.3.rar内含注册机
- RoutingTCPIPVolume12ndEdition(2005).chm
- TCP Test Tool v3.0 -- TCP测试工具
- MODBUS TCP/RTU调试工具,附主子站模拟器
- 发送TCP数据包源代码+设计报告
- QT5下实现基于TCP发送和接接收文件
- CC3200 UDP TCP透传
- Qt 用TCP和UDP传图片
- TCP文件传输Demo
评论
共有 条评论