为什么这个WinSock代码没有连接到客户端
Why this WinSock code is not connecting to client?
我是Winsock编程新手,在阅读《Network programming For Microsoft Windows》这本书时偶然发现了这段代码。但是这段代码似乎无法连接到客户端。请告诉我如何解决这个问题。
我的服务器代码:
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <ws2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")
using namespace std;
int main(){
WSADATA wsadata;
int ret;
if ((ret = WSAStartup(MAKEWORD(2, 2), &wsadata)) != 0){
cout << "Wsastartup failed" << endl;
}
else{
cout << "connection made successfully" << endl;
}
SOCKET ListeningSocket, NewConnection;
SOCKADDR_IN ServerAddr, ClientAddr;
int port = 80;
ListeningSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(port);
inet_pton(ServerAddr.sin_family,"127.0.0.1",&ServerAddr.sin_addr.s_addr);
int res= bind(ListeningSocket,(SOCKADDR*)&ServerAddr,sizeof(ServerAddr));
if (res == SOCKET_ERROR){
cout << "binding failed" << endl;
}
res = listen(ListeningSocket,5);
if (res == SOCKET_ERROR){
cout << "Listening failed" << endl;
}
int c = 1;
NewConnection= accept(ListeningSocket,(SOCKADDR*)&ClientAddr,&c);
if (NewConnection == INVALID_SOCKET){
cout << "COULD not CONNECT TO CLIENT . err code : "<<WSAGetLastError() << endl;
}
closesocket(ListeningSocket);
if (WSACleanup() == SOCKET_ERROR){
cout << "WSACleanup failed with error : " << WSAGetLastError() << endl;
}
else{
cout << "WinSock data cleaned successfully" << endl;
}
cin.get();
}
在运行此代码时,它显示"COULD not CONNECT TO CLIENT"。错误码10014"。我在windows dev center上发现了这个错误代码的描述:错误的地址。
系统在尝试使用调用的指针参数时检测到一个无效的指针地址。如果应用程序传递了无效的指针值,或者缓冲区的长度太小,则会发生此错误。例如,如果一个参数的长度小于sizeof(sockaddr).
sockaddr
结构。如何修复这个错误?
当你调用accept
时,第三个参数指向的变量需要保持第二个参数指向的缓冲区的大小。(当accept
返回时,它将保留实际使用的空间量)
在你的代码中,修改:
int c = 1;
int c = sizeof(ClientAddr);
相关文章:
- C++套接字客户端到 Python 服务器未创建连接
- 计算出有多少客户端可以连接到我正在使用的一些tcp服务器代码
- 当客户端在 write() 期间终止连接时,由对等套接字错误重置连接
- 在 QNX 中,如何管理服务器和客户端之间的 IPC 连接?
- C++ Winsock2 客户端未通过远程 IP 连接到服务器
- 客户端 gRPC 连接,C++重新连接?
- 如何在 c++ 中确定 tcp 客户端是否连接
- 检测grpc服务器中关闭的客户端连接
- 仅通过建立一次TCP连接将Recv从客户端发送到服务器套接字
- 如何将请求的客户端连接的 IP 与 QTcpSocket 类中识别的 IP 之一进行比较?
- 为什么信号连接会使套接字客户端对象失效?
- 为什么我的客户端无法连接到服务器?
- 我正在编写一个简单的客户端套接字应用程序,但在连接后服务器收到一个空缓冲区
- gRPC C++尝试在无法访问的 IP 上连接通道时阻止客户端
- C++ 套接字接受,连接的客户端列表
- 多连接客户端套接字应用程序C++
- C [UDP]如何跟踪服务器上的所有连接(客户端)套接字连接
- 使用CORBA-org.omg.CORBA.BAD_PARAM:连接客户端(在VirtualBox上)和服务器(在loc
- 如何连接客户端(在VirtualBox上)和服务器(在localhost上)?我使用CORBA和C++/Java
- 服务器设置在编译时保持打印"connected"即使没有连接客户端