欢迎来到天天文库
浏览记录
ID:57416108
大小:25.50 KB
页数:8页
时间:2020-08-16
《基于CS模式的winsock编程应用.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、***使用WINSOCK 在 客户方程序与服务方程序位于两台不同的机器上,在客户方通过指定服务方的IP地址和端口号来通讯。***下列代码仅供参考,同学们可自己参阅相应指导教材进行通信建立,之后可以下载工具软件进行开发。实验代码:#include "stdafx.h"#include "client1.h"#include "cdownload.h"#include "MainFrm.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif#define SE
2、RVER_PORT 3962#define SIZE_OF_zmfile 1080//关于此宏的定义,见server1项目。// Construction/Destruction//参数是:“可下载文件列表”List控件中当前列表项的索引。cdownload::cdownload(int thno1){ m_fname="zm.zip"; m_index=-1; doinfo.totle=0; doinfo.threadno=thno1;}cdownload::~cdownload(){}int cdownload::sendrequest(int n){ //获取服务器信息 so
3、ckaddr_in local; //建套接字 SOCKET m_socket; int rc=0; //初使化服务器地址 local.sin_family=AF_INET; local.sin_port=htons(SERVER_PORT); m_socket=socket(AF_INET,SOCK_STREAM,0); int ret; //联接服务器 ret=connect(m_socket,(LPSOCKADDR)&local,sizeof(local)); //有错的话 if(ret<0) { AfxMessageBox("联接错误"); closesocket(m_
4、socket); return -1; } //初使化命令 fileinfo fileinfo1; fileinfo1.len=n; fileinfo1.seek=50; fileinfo1.type=1; //发送命令 int aa=sendn(m_socket,(char*)&fileinfo1,100); if(aa<0) { closesocket(m_socket); return -1; } //接收服务器传来的信息 aa=readn(m_socket,(char*)&fileinfo1,100); if(aa<0) { closesocket(m_socke
5、t); return -1; } //关闭 shutdown(m_socket,2); closesocket(m_socket); return 1;}UINT cdownload::threadfunc(long index){ //初使化连接 sockaddr_in local; SOCKET m_socket; int rc=0; local.sin_family=AF_INET; local.sin_port=htons(SERVER_PORT); local.sin_addr.S_un.S_addr=inet_addr(g_csIP);m_socket=socket(
6、AF_INET,SOCK_STREAM,0); int ret; //创建一个“读入缓冲区”,大小是20 char* m_buf=new char[SIZE]; int remanent,len2; fileinfo fileinfo1; //连接服务器端。 ret=connect(m_socket,(LPSOCKADDR)&local,sizeof(local));//读入此线程的下载信息。 fileinfo1.seek=filerange[index*2];//在文件中seek的位置。fileinfo1.len=filerange[index*2+1];//要下载的这一段文件的
7、长度。 remanent=fileinfo1.len;//发给服务器端的信息中,type=2,表示要求下载文件中的一段。(目前,服务器能识别的type的类型只有0和2这两种) fileinfo1.type=2; //这个字段,大概是“可下载文件列表”中的索引,可以用作对应的数组的下标。 fileinfo1.fileno=doinfo.threadno;//destination n.目的地(目标,指定) CFile destFile;//用来保存要下载的文件的数据的
此文档下载收益归作者所有