双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

C++tcp客户端连接失败服务端显示连接成功

醉卧南楼 醉卧南楼 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
求助各位大神,在使用TCP连接的时候,服务器显示了连接,而客户端显示的是连接失败
找了半天没有发现错误所在,希望有大神帮忙讲解一下
服务端
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (ret != 0) {
cout << "wsastartup error" << endl;
return 0;
}
cout << "wsastartup success" << endl;

SOCKET ListenSock;
ListenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (ListenSock == INVALID_SOCKET) {
cout << "ListenSock error" << endl;
WSACleanup();
return 0;
}
cout << "ListenSock success" << endl;

SOCKADDR_IN server;
server.sin_family = AF_INET;
server.sin_port = htons(5000);
server.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

int r = bind(ListenSock, (SOCKADDR*)&server, sizeof(server));
if (r == SOCKET_ERROR) {
cout << "bind error" << endl;
WSACleanup();
closesocket(ListenSock);
return 0;
}
cout << "bind success" << endl;

//监听
if (listen(ListenSock, 5) == SOCKET_ERROR) {
cout << "listen error" << endl;
WSACleanup();
closesocket(ListenSock);
return 0;
}
cout << "listen success" << endl;

SOCKET connetionSock;

SOCKADDR_IN clientAddr;
int clientAddrlen = sizeof(clientAddr);

char recvtext[1024] = {'0'};
char sendtext[1024] = {'0'};

while (true) {
connetionSock = accept(ListenSock, (SOCKADDR*)&clientAddr, &clientAddrlen);
if (connetionSock == INVALID_SOCKET) {
cout << "accept error" << endl;
continue;
}
cout << "accept success!client add:" << inet_ntoa(clientAddr.sin_addr) << endl;
if (recv(connetionSock, recvtext, strlen(recvtext), 0) == SOCKET_ERROR) {
cout << "recv error" << endl;
closesocket(connetionSock);
closesocket(ListenSock);
return 0;
}
cout << "recv success!recv's data:" << recvtext << endl;

cout << "input send's data:" << endl;
cin >> sendtext;
if (send(connetionSock, sendtext, strlen(sendtext), 0) == SOCKET_ERROR) {
cout << "send error" << endl;
closesocket(connetionSock);
closesocket(ListenSock);
return 0;
}
cout << "send success" << endl;

closesocket(connetionSock);
}


客户端
WSADATA wsaData;
int ret = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (ret != 0) {
cout << "wsastartup error" << endl;
return 0;
}
cout << "wsastartup success" << endl;

SOCKET s;
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == SOCKET_ERROR) {
cout << "socket error" << endl;
WSACleanup();
return 0;
}
cout << "socket success" << endl;

SOCKADDR_IN serveradd;
serveradd.sin_family = AF_INET;
serveradd.sin_port = htons(5000);
serveradd.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

int rr = connect(s, (SOCKADDR*)&serveradd, sizeof(serveradd));
if (rr = SOCKET_ERROR) {
cout << "connect error:" << rr << endl;
closesocket(s);
WSACleanup();
return 0;
}
cout << "connect success" << endl;
cout << "input \"exit\" can exit this chat" << endl;

char recvbuf[1024] = {'0'};
char sendbuf[1024] = {'0'};

while (true) {
cout << "input send data:" << endl;
cin >> sendbuf;
if (send(s, sendbuf, 1024, 0) == SOCKET_ERROR) {
cout << "send error" << endl;
closesocket(s);
WSACleanup();
return 0;
}
if (!strcmp(sendbuf, "exit")) {
cout << "already exit chat" << endl;
break;
}
cout << "send success" << endl;

int r = recv(s, recvbuf, 1024, 0);
if (r == 0) {
cout << "r==0" << endl;
}
else if (r = SOCKET_ERROR) {
cout << "recv error" << endl;
}
recvbuf[r] = '\0';
if (!strcmp(recvbuf, "exit")) {
cout << "Server already exit chat" << endl;
break;
}
cout << "Server:" << recvbuf << endl;
}


运行结果
打开服务端

打开客户端



希望各路大神能帮忙讲解一下,不胜感激!
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
醉卧南楼
C++ 语言 65,214 成员 250,514 内容