Winsock Connect失败,错误为10049
Winsock Connect fails with error 10049
我有一个c#gui,它在单击按钮时调用引用的c++dll。在c++dll中,我有以下代码
SOCKADDR_IN server;
server.sin_port=htons (54321);
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
// Connect to server.
int iResult = connect(Socket, (SOCKADDR *) & server, sizeof (server));
if (iResult == SOCKET_ERROR) {
long iError = WSAGetLastError();
if (iError == WSAEWOULDBLOCK)
printf("recv failed with error: WSAEWOULDBLOCKn");
else
printf("recv failed with error: %ldn", iError);
wprintf(L"connect function failed with error: %ldn", WSAGetLastError());
iResult = closesocket(Socket);
if (iResult == SOCKET_ERROR)
wprintf(L"closesocket function failed with error: %ldn", WSAGetLastError());
WSACleanup();
return 1;
}
在调用dll之前的c#调用程序和dll中winsock2进行的连接中,我有
IPAddress localAddr = IPAddress.Parse("127.0.0.1");
TcpListener serverSocket = new TcpListener(localAddr,54321);
int requestCount = 0;
TcpClient clientSocket = default(TcpClient);
serverSocket.Start();
然后在调用dll后,我进行
//调用dll以运行连接代码
clientSocket = serverSocket.AcceptTcpClient();//hangs up here because dll can't Connect.
在c++dll中,当我进入连接时,我得到错误10049,这是wseaddrnotavail。
msdn-winsock错误代码
我在Connect通话中做错了什么?我根据msdn示例选择了54321作为端口。谢谢
据我所见,除非您没有在这里提供代码,否则您没有正确设置SOCKADDR_IN
结构的sin_addr
字段。它需要一个按网络字节顺序排列的IP地址。
你需要做一些类似的事情:
inet_pton(AF_INET, "127.0.0.1", &server.sin_addr);
来源:
http://msdn.microsoft.com/en-us/library/windows/desktop/cc805844(v=vs.85).aspx
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- Winsock 错误 10049 尝试绑定
- UDP 套接字错误 10049
- WSA 10049 错误,没有明显的原因
- Winsock Connect失败,错误为10049