#include "stdafx.h"
#include <winsock2.h>
#include<iostream>
using namespace std;#pragma comment(lib,"ws2_32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA w;
WORD ver=MAKEWORD(2,2);
WSAStartup(ver,&w); SOCKET server;
SOCKADDR_IN addr;
addr.sin_family=AF_INET;
addr.sin_port=(htons(12345));
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY); server=socket(AF_INET,SOCK_STREAM,0);
bind(server,(SOCKADDR*)&addr,sizeof(addr));
listen(server,10); SOCKET client;

cout<<"服务端已启动!\n";
while(TRUE)
{
    if(client=accept(server,0,0)!=INVALID_SOCKET)
{
cout<<"有客户尝试连接\n";
if( send(client,"Password",sizeof("Password"),0)!=SOCKET_ERROR)

cout<<"有客户请求连接,正等待客户输入验证信息\n";

else 
{
 
 cout<<"发送失败!\n"<<WSAGetLastError ();
}
}
} return 0;
}客户端部分代码:
char buff[20];

if(recv(server,buff,sizeof(buff),0)!=SOCKET_ERROR)
/*if语句不成立,还导致未响应
*/
{
MessageBox("lianjiechenggong");
if(strcmp(buff,"Password")==0)
{
    CPASSWORD password;
                    password.DoModal();
}

}
else{
CString str;
str.Format("%d",WSAGetLastError());
MessageBox(str);
}
}
}
两边的错误码分别是(客户端)1 0 0 5 4 —W S A E C O N N R E S E T
和1 0 0 3 8 —W S A E N O T S O C K
 我刚学,也许问题很简单,希望大家不要笑话,能够体验新手有问题百思不得其解的心情,
     给以宝贵的意见,谢谢大家Visual C++socket

解决方案 »

  1.   

    客户端10054应该是你连接的地址不对,建议参考这的socket例子:
    http://download.csdn.net/detail/geoff08zhang/4571358
      

  2.   

    两个都是在自己的机子上运行,地址是127.0.0.1。应该没错
    而且前面显示connect也成功了,就是到了
    send(client,"Password",sizeof("Password"),0)这句有错 10038客户端recv(server,buff,sizeof(buffer),0)这句有错 10054求赐教
      

  3.   

    额貌似你这里可能理解错了
    send(client,"Password",sizeof("Password"),0)这句有错 10038客户端recv(server,buff,sizeof(buffer),0)这句有错 10054sizeof貌似是返回"Password"这个数据的类型的大小的,也就是说你接收的长度错了,你调试下看看比如我一般这样写while ( recv(sockfd, text,512, 0) > 0)
    text是char text[512]
    第三个参数的意思是接收512个char参数
      

  4.   

    昨晚看了一个帖子,是http://bbs.csdn.net/topics/60443046
    他说是没有create我是新手没看清是什么意思,我用的是
    SOCKET socket(
      int af,       
      int type,     
      int protocol  
    );
    函数创建的  还需要create什么吗 
    初学 很多不懂 望大家不吝赐教
      

  5.   

    if((client=accept(server,0,0))!=INVALID_SOCKET)
    注意运算符优先级, !=优先级高于=