gpt4 book ai didi

c++ - 第一次使用socket编程。连接没有发生。

转载 作者:行者123 更新时间:2023-11-28 07:20:04 26 4
gpt4 key购买 nike

拜托,这是我第一次尝试使用套接字进行编程。我使用 C++ MFC,我尝试制作一个应用程序通过其 TCP/IP 地址与视频服务器 Controller 进行通信。

我的所有第一步都没有出错。我创建了一个套接字,我调用了 bind() 函数来关联地址,但是当我尝试连接时它不起作用。

我不知道我做错了什么,所以我把我的部分代码放在下面。

 struct sockaddr_in my_addr;
int lenAddrs;

b1 = 192;
b2 = 168;
b3 = 11;
b4 = 2;

remoteAddress.Format("%u.%u.%u.%u", b1, b2, b3, b4);

port = (u_short)(portNumber);

// my address
memset(&my_addr, 0, sizeof(my_addr));
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(port);
lenAddrs = sizeof(my_addr);


// remote address
memset(&remote_addr, 0, sizeof(remote_addr));
remote_addr.sin_family = AF_INET;
remote_addr.sin_port = port;
inet_pton(AF_INET, remoteAddress, (&remote_addr.sin_addr));

// socket
sckSloMo = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sckSloMo == INVALID_SOCKET)
{
AfxMessageBox("sckSloMo is invalid!!");
return;
}

if (sckSloMo != SOCKET_ERROR)
{
ret = bind(sckSloMo, (const sockaddr*) &my_addr, sizeof(my_addr));

if (ret == 0)
{
ret = connect(sckSloMo, (const sockaddr*) &remote_addr, sizeof(remote_addr));
if (ret == 0)
{
AfxMessageBox("connect!");
StartSendingMessages();
}
else
{
AfxMessageBox("connect error!!!");
return;
}

}
}

如果有人能帮助我,我会很高兴。

最佳答案

试试这个:

struct sockaddr_in remote_addr;
int lenAddrs;

b1 = 192;
b2 = 168;
b3 = 11;
b4 = 2;

remoteAddress.Format("%u.%u.%u.%u", b1, b2, b3, b4);

port = (u_short)(portNumber);

// remote address
memset(&remote_addr, 0, sizeof(remote_addr));
remote_addr.sin_family = AF_INET;
remote_addr.sin_port = htons(port);
inet_pton(AF_INET, remoteAddress, (&remote_addr.sin_addr));

// socket
sckSloMo = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (sckSloMo == INVALID_SOCKET)
{
AfxMessageBox("sckSloMo is invalid!!");
return;
}

if (sckSloMo != SOCKET_ERROR)
{
ret = connect(sckSloMo, (const sockaddr*) &remote_addr, sizeof(remote_addr));
if (ret == 0)
{
AfxMessageBox("connect!");
StartSendingMessages();
}
else
{
AfxMessageBox("connect error!!!");
return;
}
}

正如其他人已经正确指出的那样,端口值的字节顺序不正确。此外,您不需要在客户端套接字上使用 bind()MSDN docuemntation for connect()有一个非常简单易懂的示例。

关于c++ - 第一次使用socket编程。连接没有发生。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19640210/

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