使用CSocket连接到服务器程序

connect to a server program using CSocket

本文关键字:服务器 程序 连接 CSocket 使用      更新时间:2023-10-16

我创建了这个简单的示例程序,但它不起作用。它无法连接。知道为什么吗?

#include <stdio.h>
#include <afxsock.h>
void main()
{
    int lalala;
    CSocket mySocket;
    printf("%dn", mySocket.Create());
    CString ipAddress = _T("127.0.0.1");
    lalala = mySocket.Connect(ipAddress, 3015);
    printf("%d", lalala);
    getchar();
}

我已经有了一个监听端口3015 的程序

是否使用AfxSocketInit()初始化了套接字?如果在创建套接字之前没有调用它

Connect()需要两个参数地址和数据长度。地址是结构体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"));