我已经创建了这个简单的示例程序,但这不起作用。它不会连接。知道为什么吗?
#include <stdio.h>
#include <afxsock.h>
void main()
{
int lalala;
CSocket mySocket;
printf("%d\n", mySocket.Create());
CString ipAddress = _T("127.0.0.1");
lalala = mySocket.Connect(ipAddress, 3015);
printf("%d", lalala);
getchar();
}
我已经有一个监听端口3015的程序
答案 0 :(得分:0)
您是否使用AfxSocketInit()初始化了套接字?如果在创建套接字之前没有调用它
答案 1 :(得分:0)
Connect()需要两个参数地址和数据长度。地址是struct sockaddr_in,它作为SOCKADDR传递给该方法。数据的长度为sizeof(SOCKADDR)。
我不确定为什么互联网上的大多数示例都使用诸如Connect(ipaddress,port)之类的东西,也许就是另一个SDK。
这对我来说很重要
if (AfxSocketInit() == FALSE) {
AfxMessageBox(_T("Failed to init sockets"));
return _T("");
}
CSocket socket;
if (!socket.Create()) {
AfxMessageBox(_T("Failed to create socket"));
return _T("");
}
SOCKADDR *sockaddr;
struct sockaddr_in remote_addr;
port = (u_short)(port);
// 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, "127.0.0.1", (&remote_addr.sin_addr));
sockaddr = (SOCKADDR *)&(remote_addr);
if (!socket.Connect(sockaddr, sizeof(SOCKADDR))) {
AfxMessageBox(_T("Failed to connect to server, 127.0.0.1 9000"));