C++编写的多线程通信程序,代码编译没有错误(vc),可是服务端与客户端就是连接不上,望高手解答

服务端代码:#include<iostream>#include<windows.h>#pragmacomment(lib,"Ws2_32.lib")usingnames... 服务端代码:
#include<iostream>
#include<windows.h>
#pragma comment(lib,"Ws2_32.lib")
using namespace std;
DWORD WINAPI AnswerThread(LPVOID IpParamter)
{

//SOCKET csSocket=(SOCKET)(LPVOID)IpParamter;

while(1)
{
cout<<"AnswerThread display!"<<endl;
Sleep(1000);
}
}
int main()
{
WORD wVersionRequested;
WSADATA wsadata;
wVersionRequested=MAKEWORD(1,1);
DWORD dwThreadID;
HANDLE hThread;
int err=WSAStartup(wVersionRequested,&wsadata);
if(err!=0)
return 0;
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
hThread=CreateThread(NULL,0,AnswerThread,NULL,0,&dwThreadID);
if(hThread==NULL)
cout<<"create answerthread failed;"<<endl;
CloseHandle(hThread);
closesocket(sockSrv);
return 0;
}
客户端代码:http://zhidao.baidu.com/question/1575265254585928020.html
展开
 我来答
Zkek_BT能猫
2014-11-21 · 超过35用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:51万
展开全部

我调试了你的代码,你的代码是没有问题的,虽然不能使用,但是正常的Socket通讯流程是可以进行的。而且我调试的时候服务器和客户端代码都返回通讯成功。accept()返回的socket为124,connect返回0,说明通讯是正常的。你需要从操作系统环境找原因了。

 

调试截图如下:

 

服务器端accept返回socket为124

 

 

 

客户端connect返回0

 

 

戚文柏Ro
推荐于2016-07-30 · TA获得超过336个赞
知道小有建树答主
回答量:400
采纳率:100%
帮助的人:400万
展开全部
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
hThread=CreateThread(NULL,0,AnswerThread,NULL,0,&dwThreadID);
if(hThread==NULL)
cout<<"create answerthread failed;"<<endl;
上面一段做一个while循环,已让线程函数操作,如果按照你目前的做法,创建线程成功后,主线程就立即返回了,所以资源都会释放,所以你创建的线程根本不会运行.

另:你的线程应该使用recv( sockSrv, buffer, 1024, 0 )来接收客户端的信息,使用send( sockSrv, data, sizeof( data )来想客户端发送数据,表明你已经登录成功.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友d3fdc8a
2014-11-21 · 超过12用户采纳过TA的回答
知道答主
回答量:61
采纳率:0%
帮助的人:29.1万
展开全部
会不会是防火墙的原因
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式