#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
#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
http://download.csdn.net/detail/geoff08zhang/4571358
而且前面显示connect也成功了,就是到了
send(client,"Password",sizeof("Password"),0)这句有错 10038客户端recv(server,buff,sizeof(buffer),0)这句有错 10054求赐教
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参数
他说是没有create我是新手没看清是什么意思,我用的是
SOCKET socket(
int af,
int type,
int protocol
);
函数创建的 还需要create什么吗
初学 很多不懂 望大家不吝赐教
注意运算符优先级, !=优先级高于=