c ++ winsock客户端无法使用文本框连接主机IP

时间:2012-08-05 19:14:36

标签: c++ textbox ip-address winsock connect

当我使用文本框中的主机IP时,我无法连接到我的服务器。 看我的代码:

                    char *bufhost;
                int bufhostlen;
                bufhostlen = GetWindowTextLength(hwndTextBox_ip) + 1;
                GetWindowText(hwndTextBox_ip, bufhost, bufhostlen);
                sockaddr_in sin;
                sin.sin_family=AF_INET;
                sin.sin_port=htons(5060);
                sin.sin_addr.s_addr=inet_addr(bufhost);
                connect(sock,(LPSOCKADDR)(&sin),sizeof(sin));

如果我使用

sin.sin_addr.s_addr=inet_addr("127.0.0.1");

连接没有问题。

我真的不知道如何完成这项工作(搜索了几个小时......) 感谢您的帮助: - )

解决方案:

正如PermanentGuest告诉我的那样,我必须为缓冲区分配内存:

                    char *bufhost;
                int bufhostlen;
                bufhostlen = GetWindowTextLength(hwndTextBox_ip) + 1;
                bufhost = (char*) malloc(bufhostlen);
                GetWindowText(hwndTextBox_ip, bufhost, bufhostlen);
                sockaddr_in sin;
                sin.sin_family=AF_INET;
                sin.sin_port=htons(5060);
                sin.sin_addr.s_addr=inet_addr(bufhost);
                connect(sock,(LPSOCKADDR)(&sin),sizeof(sin));

1 个答案:

答案 0 :(得分:1)

您需要为bufhost分配内存。不幸的是GetWindowText的文档没有明确提到这一点。但是对于所有win32 API,这是常见的行为