永发信息网

哪位有VC++6.0的基于MFC对话框的 网络编程win socket通讯的代码,可以给我发一份吗?

答案:2  悬赏:0  手机版
解决时间 2021-02-16 09:45
  • 提问者网友:抽煙菂渘情少年
  • 2021-02-15 23:47
现在需要编一个带一个服务器,几个客户端的软件,不同客户端不同的权限给服务器输入数据,然后服务器经过计算可以得到结果,类似老师给学生大成绩一样,每个老师给不同的科目的成绩,服务器现实所有成绩,需要编这个程序,我是业余的,想参考学习,哪位高手有这个相似的源代码,给我发一份,非常感谢。。我的qq107316863.我没有多少财富值剩下6个财富值了,拜托高人了。

就是一个服务器和多个客户端的多线程通信,客户端带登陆界面的源代码。
最佳答案
  • 五星知识达人网友:罪歌
  • 2021-02-16 00:02
详细的教程你都可以参考孙鑫的C++视频第十四课和第十五课,内容如下:网络的相关知识,网络程序的编写。
由于带链接需要审核很久,你自己搜索孙鑫C++视频就可以下载了
解决问题请及时采纳,谢谢!
全部回答
  • 1楼网友:笑迎怀羞
  • 2021-02-16 01:01
服务器端:   一、建立支持socket项目。   利用app wizard创建mfc exe项目,进行到wizard的第四步时,在“what features would you like include?”中,选中“windows sockets”项。其它各步骤各选项根据实际应用进行选择即可。这样创建的项目就已经支持socket,并已经初始化了。   如果要在已有的项目中添加socket支持,只须进行两项工作:   1 在stdafx.h文件中包含头文件afxsock.h (#include "afxsock.h" )。   2 初始化套接字,在应用程序类的成员函数:“::initinstance()”中添加如下初始化套接字代码。(并在string table和resource.h中添加idp_sockets_init_failed的定义)   if (!afxsocketinit())   {afxmessagebox(idp_sockets_init_failed);   return false;}   二、创建服务套接字并创建监听线程。   //创建服务套接字   socket sercon=socket(pf_inet,sock_stream,0);   //判断是否成功创建   if (sercon==invalid_socket)   {afxmessagebox(“server wrong !”);   return -1;}   //配置套接字地址等信息   sockaddr_in sin;   sin.sin_family=af_inet;   //指定本地地址   sin.sin_addr.s_addr=htonl(inaddr_any);   //指定服务器端口号nport,可自设   int nport=5080;   sin.sin_port=htons(nport);   //地址信息与套接字进行绑定。   if (bind(sercon,(lpsockaddr)&sin,sizeof(sin))==socket_error)   {afxmessagebox(“bind wrong!”);   return -1;}   //建立监听队列(大小为3),开始监听   if (listen(sercon,3)==socket_error)   {afxmessagebox(“listen wrong!”);   return -1;};   ①实现监听线程,并创建数据接收线程。   //在程序需要开始监听连接的地方创建监听线程,并实现。   //创建监听线程(在程序开始或按钮事件实现中)   afxbeginthread(waitconnect,null);   //实现监听线程   uint waitconnect(lpvoid lpparm)   {    socket conn[3];    int lenc=sizeof(sockaddr);    int alreadycon=0;    //sercon为前面所创建服务器套接字    while(1)    {    if (alreadycon<=3)    {    //接受连接请求    conn[alreadycon] = accept(sercon, (lpsockaddr)&cin, &lenc);    if (conn[alreadycon]==invalid_socket)    {    afxmessagebox("accept wrong !");    }    else    {//创建数据接收线程    afxbeginthread(readdata, &conn[alreadycon]);    alreadycon++;    return 0;    }    }    else    {    //避免影响主线程运行    sleep(200);    }    }   }   ②实现数据接收线程。   uint readdata(lpvoid ss)   { socket *readsock;   readsock=(socket *)ss;   char buf[2000];   int revnum=0;   //开始循环接受数据   while (revnum!=-1)   {//revnum<=0则表示连接已断!   revnum=recv(*readsock,buf,2000,0);   if (revnum>0)   buf[revnum]=0;//截断缓冲区   //buf中存储已接受数据。}   return 0;   }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯