资源简介
TCP协议实现客户端/服务器,能上传下载文件,客户端能显示进度,能随时终止上传下载

代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#pragma comment(lib“ws2_32.lib“)
#define SERVER_PORT 8600
#define BACKLOG 10
HANDLE event;
SOCKET client;
unsigned int end=0;
unsigned int force_end=0;
/*进行下载*/
unsigned int _stdcall download(void *p);
/*进行上传*/
unsigned int _stdcall update(void *p);
int main()
{
WSADATA WSData;
HANDLE hfile;
struct sockaddr_in server_addr;
char IP[20];
char filename[100];
unsigned char choice;
int ret;
HANDLE hThread;
pthread_t pthread;
char flag;
event = CreateEvent( NULL TRUE TRUE NULL );
if ((WSAStartup(MAKEWORD(22)&WSData))!=0)
{
printf(“socket initial error!\n“);
return -1;
}
if((client=socket(AF_INETSOCK_STREAMIPPROTO_TCP))==-1)
{
printf(“create socket error!\n“);
WSACleanup();
return -1;
}
printf(“please input the server IP:“);
scanf(“%s“IP);
memset(&server_addr 0 sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(SERVER_PORT);
server_addr.sin_addr.s_addr=inet_addr(IP);
printf(“正在连接,请稍后...\n“);
ret=connect(client(struct sockaddr *)&server_addrsizeof(server_addr));
while(ret==-1)
{
printf(“连接服务器失败,可能原因:服务器未打开.\n“);
printf(“等待服务器响应...\n“);
Sleep((DWORD)500);
ret=connect(client(struct sockaddr *)&server_addrsizeof(server_addr));
}
printf(“连接成功.\n“);
printf(“按任意键进入主界面\n“);
getchar();
while(1)
{
system(“cls“);
printf(“1.上传文件\n“);
printf(“2.下载文件\n“);
printf(“3.结束程序\n“);
printf(“按p暂停上传按c继续按Esc终止当前文件操作\n“);
printf(“输入相应序号进行所需操作:“);
scanf(“%d“&choice);
printf(“\n\n\n“);
send(client&choice10);
switch(choice)
{
case 1: memset(filename‘\0‘100);
printf(“输入上传文件名:“);
scanf(“%s“filename);
hfile=CreateFile(filenameGENERIC_READFILE_SHARE_READNULLOPEN_EXISTINGFILE_ATTRIBUTE_NORMALNULL);
if (hfile==INVALID_HANDLE_VALUE)
{
perror(“CreateFile“);
printf(“可能原因:文件不存在请检查文件名\n“);
getchar();
getchar();
break;
}
if(send(clientfilenamesizeof(filename)0)<0)
{
perror(“recv“);
return -1;
}
hThread=(HANDLE)_beginthreadex(NULL0(unsigned int (__stdcall *)(void *))update(LPVOID)(&hfile)NULL&pthread);
/* while(end!=1)
{
flag=getchar();
if(flag == ‘p‘ )
{
printf(“文件已暂停按下c键可使传输继续\n“);
ResetEvent(event);//设为不发信号状态
}
if(flag==‘c‘)
{
printf(“文件传输已继续\n“);
SetEvent(event);
}
}
if(end==1)
{
printf(“上传文件完毕\n“);
}
*/
while(1)
{
if(end==1)
break;
if(kbhit())
{
flag=getch();
if(flag==‘p‘)
{
printf(“文件已暂停按下c键可使传输继续\n“);
ResetEvent(event);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 7571 2010-08-15 14:18 client.c
文件 6330 2010-08-15 14:30 server.c
----------- --------- ---------- ----- ----
13901 2
- 上一篇:flash模拟地球公转自转
- 下一篇:进销存管理系统UML类图
相关资源
- Modbus协议官方文档中、英文全
- bp神经网络源代码,可直接运行
- 04741计算机网络原理知识点整理.docx(
- Omron ETN21模块进行modbustcp通讯
- Visio图标-最新最全的网络通信图标库
- WPF USB 网络 串口 通信软件
- ManageEngine_OpManager_12.3安装手册+管理员
- WPE三件套(WPE+CCP+E2G)冰枫修改版
- TCL-S1916 ,1924交换机管理程序
- 连续hopfield神经网络解决TSP问题
- Windows异步套接字网络编程
- 改进的BP神经网络算法
- 通风网络解算程序 fortran90
- 证券总部网络拓扑结构示意图网络拓
- 校园网络规划与设计课程设计
- 网络唤醒代码
- delphi 通过Ping命令检测网络是否正常
- ipv6网络抓包程序
- 防火墙编程-Visual C 网络通信开发
- 组态王中S7-300TCP驱动
- 基于Apache Mina实现的TCP长连接和短连接
- 基于bp神经网络的表情识别
- MFC网络编程实例
- IpHlpApi.h&IpHlpApi.lib
- CVI下的TCP服务器和客户端
- 代码客:G-TcpServer(IOCP) 1.0 正式版及
- 用C 实现的对网络上的ARP数据包进行
- 网络(UDP)转串口程序
- TCP 发包工具(windows)
- SOCKET 网络编程 计算机网络 作业 客户
评论
共有 条评论