基于CS模式的winsock编程应用.doc

基于CS模式的winsock编程应用.doc

ID:57416108

大小:25.50 KB

页数:8页

时间:2020-08-16

基于CS模式的winsock编程应用.doc_第1页
基于CS模式的winsock编程应用.doc_第2页
基于CS模式的winsock编程应用.doc_第3页
基于CS模式的winsock编程应用.doc_第4页
基于CS模式的winsock编程应用.doc_第5页
资源描述:

《基于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;//用来保存要下载的文件的数据的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。