gpt4 book ai didi

c# - Winsock 连接失败,出现错误 10049

转载 作者:行者123 更新时间:2023-11-28 03:13:52 25 4
gpt4 key购买 nike

我有一个 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: WSAEWOULDBLOCK\n");
else
printf("recv failed with error: %ld\n", iError);

wprintf(L"connect function failed with error: %ld\n", WSAGetLastError());
iResult = closesocket(Socket);
if (iResult == SOCKET_ERROR)
wprintf(L"closesocket function failed with error: %ld\n", 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运行Connect代码

clientSocket = serverSocket.AcceptTcpClient();//hangs up here because dll can't Connect.

在 c++ dll 中,当我进入 Connect 时出现错误 10049,这是WSAEADDRNOVAIL。

msdn winsock error codes

我在 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

关于c# - Winsock 连接失败,出现错误 10049,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17577549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com