资源简介
本文件传输系统采用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个文件信息
相关资源
- Borland Socket Server Fix2.0 D7
- Borland Socket Server程序 包含D6和D7源码
- TCP IP通信labview程序
- Modbus协议官方文档中、英文全
- Omron ETN21模块进行modbustcp通讯
- 通信软件的具体实例──基于Socket的
- 用Socket编程实现FTP
- websocket实现一对一聊天
- 组态王中S7-300TCP驱动
- 基于Apache Mina实现的TCP长连接和短连接
- CVI下的TCP服务器和客户端
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- TCP 发包工具(windows)
- SOCKET 网络编程 计算机网络 作业 客户
- linux 网络实验 ftp程序
- 用Socket写的简易FTP服务器和客户端
- VxWorks TCPIP协议栈
- socket小工具(可方便建立TCP UDP的soc
- socket客户端源码
- vc 编写的基于TCP协议的客户/服务器
- 基于CSocket的多人聊天室
- 采用WINSOCK2 编写的TCP/UDP通信程序
- socket文件传输源码
- Modbus TCP Client
- 易语言 TCP使用HTTP、SOCKES5代理IP。
- 西门子S7-1200 MODBUS-TCP通讯编程
- 200SMART Modbus-TCP通信程序演示-轮询(多
- Socket自制系统
- HP用SOCKET实现(客户端---服务端)
- TCP_UDP对结构体加密数据传输
评论
共有 条评论