为什么connect总是失败

smdszgzh 2009-03-11 11:41:32

//Sever

#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
WSADATA m_data;
sockaddr_in Sevaddr_in,Cliaddr_in;
if(WSAStartup(MAKEWORD(2,2),&m_data)!=0)
{
cout<<"Init socket library failed! "<<endl;
return -1;
}
SOCKET SeverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKET CliSocket;
Sevaddr_in.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
Sevaddr_in.sin_family=AF_INET;
Sevaddr_in.sin_port=htons(6000);
if(SeverSocket==INVALID_SOCKET)
{
cout<<"Create socket failed!"<<endl;
}
int n=bind(SeverSocket,(sockaddr*)&Sevaddr_in,sizeof(Sevaddr_in));
if(n!=0)
cout<<"Bind failed!"<<endl;
if(listen(SeverSocket,5)!=0)
{
cout<<"Listen failed!"<<endl;
}


while(true)
{
int length=sizeof(Cliaddr_in);
CliSocket=accept(SeverSocket,(sockaddr*)&Cliaddr_in,&length);
char *Sendbuff=new char[100];
Sendbuff="";
sprintf(Sendbuff,"%s","Welcome!");
//cin.getline(Sendbuff,sizeof(Sendbuff));;
char *recvbuff=new char[100];
recvbuff="";
send(CliSocket,Sendbuff,sizeof(Sendbuff)+1,0);
recv(CliSocket,recvbuff,sizeof(recvbuff)+1,0);
cout<<recvbuff<<endl;
}
closesocket(SeverSocket);
WSACleanup();
return 0;
}


//Client
#include <Windows.h>
#include <iostream>
using namespace std;
int main()
{
WSADATA data;
if(WSAStartup(MAKEWORD(2,2),&data)!=0)
{
cout<<"Init socket library failed!"<<endl;
return -1;
}
sockaddr_in Sevaddr_in;
Sevaddr_in.sin_addr.S_un.S_addr=inet_addr("127,0,0,1");
Sevaddr_in.sin_family=AF_INET;
Sevaddr_in.sin_port=htons(6000);
SOCKET CliSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(CliSocket==INVALID_SOCKET)
{
cout<<"Create socket failde!"<<endl;
}
int x=connect(CliSocket,(sockaddr*)&Sevaddr_in,sizeof(Sevaddr_in));
if(x==SOCKET_ERROR)
{
cout<<"Connect failed!"<<endl;//这里总失败!
}
char *Sendbuff=new char[100];
Sendbuff="";
char *recvbuff=new char[100];
recvbuff="";
recv(CliSocket,recvbuff,sizeof(recvbuff)+1,0);
cout<<recvbuff<<endl;
cin.getline(Sendbuff,sizeof(Sendbuff));
send(CliSocket,Sendbuff,sizeof(Sendbuff)+1,0);
closesocket(CliSocket);
WSACleanup();
return 0;
}
...全文
230 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
smdszgzh 2009-03-11
  • 打赏
  • 举报
回复
把IP改了后,单独运行没问题,先运行服务器再运行客户端就出错!
chin_chen 2009-03-11
  • 打赏
  • 举报
回复
#include <Winsock2.h>

然后再依赖库里面加上一个 Ws2_32.lib.
  • 打赏
  • 举报
回复
("127,0,0,1");
汗,怎么是,应该是.
  • 打赏
  • 举报
回复
服务器那边的accept家调试信息看看.
yuyunliuhen 2009-03-11
  • 打赏
  • 举报
回复
很明显 IP地址 127.0.0.1
yuyunliuhen 2009-03-11
  • 打赏
  • 举报
回复
WSAGetLastError() 查查错误代码
arong1234 2009-03-11
  • 打赏
  • 举报
回复
127.0.0.1是环回地址,报文根本不出你的网卡
你应该用0.0.0.0或者把inet_addr("0.0.0.0")换成INADDR_ANY宏即可,其实就是unsigned int 0
[Quote=引用 4 楼 hairetz 的回复:]
("127,0,0,1");
汗,怎么是,应该是.
[/Quote]
yuyunliuhen 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 smdszgzh 的回复:]
把IP改了后,单独运行没问题,先运行服务器再运行客户端就出错!
[/Quote]

那是你字符串的操作问题
和SOCKET无关
smdszgzh 2009-03-11
  • 打赏
  • 举报
回复
Cannot open include file: 'stdafx.h': No such file or directory
liuysheng 2009-03-11
  • 打赏
  • 举报
回复
//代码改成如下,就可以了
#include "stdafx.h"
#include <Windows.h>
#include <iostream.h>
#include<winsock2.h>

#pragma comment(lib,"ws2_32.lib")

//using namespace std;//要不要,都行

int main()
{
WSADATA m_data;
sockaddr_in Sevaddr_in,Cliaddr_in;
if(WSAStartup(MAKEWORD(2,2),&m_data)!=0)
{
cout<<"Init socket library failed! "<<endl;
return -1;
}
SOCKET SeverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKET CliSocket;
Sevaddr_in.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
Sevaddr_in.sin_family=AF_INET;
Sevaddr_in.sin_port=htons(6000);
if(SeverSocket==INVALID_SOCKET)
{
cout<<"Create socket failed!"<<endl;
}
int n=bind(SeverSocket,(sockaddr*)&Sevaddr_in,sizeof(Sevaddr_in));
if(n!=0)
cout<<"Bind failed!"<<endl;
if(listen(SeverSocket,5)!=0)
{
cout<<"Listen failed!"<<endl;
}


while(true)
{
int length=sizeof(Cliaddr_in);
CliSocket=accept(SeverSocket,(sockaddr*)&Cliaddr_in,&length);
char *Sendbuff=new char[100];
Sendbuff="";
sprintf(Sendbuff,"%s","Welcome!");
//cin.getline(Sendbuff,sizeof(Sendbuff));;
char *recvbuff=new char[100];
recvbuff="";
send(CliSocket,Sendbuff,sizeof(Sendbuff)+1,0);
recv(CliSocket,recvbuff,sizeof(recvbuff)+1,0);
cout<<recvbuff<<endl;
}
closesocket(SeverSocket);
WSACleanup();
return 0;
}

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧