资源简介
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类图
相关资源
- TCP_Socket.zip
- 基于RTPRTCP和RTSP协议的流媒体快速流间
- 单神经网络PID
- 网络安全等级保护2.0-通用要求-表格版
- 设计、实现一个全国大城市间的交通
- Modbus TCP 调试软件
- 基于生成对抗网络的语音增强代码及
- 基于C/S模式的学生信息管理系统
- win10 快速切换ip 设置ip为公司网络或自
- 复杂网络数据从excel转pajek软件
- MJU-校园网的建设方案
- 多线程sock5代理
- 小波神经网络
- 企业园区网络设计、规划与实施方案
- W5500 TCP/IP SPI发送控制
- Cisco 中小企业网络结构设计案例
- 杭电 计算机网络 实验 路由rip配置
- 计算机网络 东南大学 复习资料 往届
- 《计算机网络》(第4版)清华出版社
- Qt:利用ntp服务器获取网络时间
- Socket通信发送端向接收端发送图片D
- 2018网络工程师资料完整版
- 无线AP Ap1242
- 报文测试器v2.0(tcp/udp报文数据测试)
- centos6的网络源
- GA优化后的RBF神经网络
- 计算机网络 韩立刚 配套视频和PPT资源
- 华为HCIP认证,2020年10月27日最新题库
- 计算机网络自顶向下第六版.txt
- 绝版 cdlinux 0.9.7.1 集成 minidwep 40420 无
评论
共有 条评论