现在需要编一个带一个服务器,几个客户端的软件,不同客户端不同的权限给服务器输入数据,然后服务器经过计算可以得到结果,类似老师给学生大成绩一样,每个老师给不同的科目的成绩,服务器现实所有成绩,需要编这个程序,我是业余的,想参考学习,哪位高手有这个相似的源代码,给我发一份,非常感谢。。我的qq107316863.我没有多少财富值剩下6个财富值了,拜托高人了。
就是一个服务器和多个客户端的多线程通信,客户端带登陆界面的源代码。
哪位有VC++6.0的基于MFC对话框的 网络编程win socket通讯的代码,可以给我发一份吗?
答案:2 悬赏:0 手机版
解决时间 2021-02-16 09:45
- 提问者网友:抽煙菂渘情少年
- 2021-02-15 23:47
最佳答案
- 五星知识达人网友:罪歌
- 2021-02-16 00:02
详细的教程你都可以参考孙鑫的C++视频第十四课和第十五课,内容如下:网络的相关知识,网络程序的编写。
由于带链接需要审核很久,你自己搜索孙鑫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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯