C++tcp客户端连接失败服务端显示连接成功
求助各位大神,在使用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;
}运行结果
打开服务端

打开客户端


希望各路大神能帮忙讲解一下,不胜感激!
...全文
相关推荐
c++socket实例编程[参照].pdf
c++socket实例编程[参照].pdf
网络投票客户端socket编程
使用C++builder开发环境编写网络投票客户端和服务端
基于C++实现一个简单的QT文件传输系统包含客户端和服务端源码.zip
基于C++实现一个简单的QT文件传输系统包含客户端和服务端源码.zip
c++ 强大的聊天源码
c++ 强大的聊天源码
llama.cpp原生网页聊天教程[项目代码]
本文详细介绍了如何利用llama.cpp自带原生网页聊天服务,无需部署第三方UI,仅需一条命令即可开启。内容涵盖前置准备、极简启动命令、成功启动标志、访问网页聊天界面的方法、防火墙放行步骤、关键注意事项以及跨局域网/外网访问的解决方案。此外,还提供了网页功能的说明,包括多轮对话、上下文记忆等。适合本地大模型玩家快速上手,实现低占用、高速度的局域网共享聊天服务。



