bind函数和connect函数

bind函数

bind 函数用于将一个套接字(socket)与特定的地址(IP地址和端口号)关联起来。在上下文中,通常用于服务器在启动时绑定一个固定的端口号,以等待客户端的连接。

函数原型:

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

参数解释:

  • sockfd: 要绑定地址的套接字描述符。
  • addr: 指向 sockaddr 结构体的指针,包含了要绑定的地址信息。
  • addrlen: sockaddr 结构体的长度。

在你提供的代码中,serverSocket 是通过 socket 函数创建的套接字。然后,bind 函数用于将这个套接字与 serverAddr 结构体中指定的地址信息关联起来。

// 绑定Socket
if (bind(serverSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
    printf("Bind failed with error: %d\n", WSAGetLastError());
    closesocket(serverSocket);
    WSACleanup();
    return 1;
}

这里 serverSocket 是要被绑定的套接字,&serverAddr 是一个指向 serverAddr 结构体的指针,sizeof(serverAddr) 表示 serverAddr 结构体的大小。

绑定成功后,服务器套接字将与指定的 IP 地址和端口号关联起来,可以开始监听客户端的连接请求。

connect函数

connect 函数用于建立与远程服务器的连接。

int connect(
  SOCKET         s,
  const sockaddr *name,
  int            namelen
);
  • s: 描述符,标识与远程服务器之间的套接字。
  • name: 指向 sockaddr 结构的指针,其中包含目标服务器的地址信息。
  • namelen: sockaddr 结构的长度。

返回值:

  • 如果成功,返回 0。
  • 如果出现错误,返回 SOCKET_ERROR,可以通过调用 WSAGetLastError 获取错误代码。

示例用法:

#include <winsock2.h>
#include <stdio.h>

#pragma comment(lib, "ws2_32.lib")

int main() {
    // 初始化Winsock
    WSADATA wsaData;
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        printf("WSAStartup failed.\n");
        return 1;
    }

    // 创建Socket
    SOCKET clientSocket = socket(AF_INET, SOCK_STREAM, 0);
    if (clientSocket == INVALID_SOCKET) {
        printf("Error creating socket: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }

    // 配置服务器地址
    struct sockaddr_in serverAddr;
    serverAddr.sin_family = AF_INET;
    serverAddr.sin_port = htons(12345);
    serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    // 连接服务器
    if (connect(clientSocket, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
        printf("Connect failed with error: %ld\n", WSAGetLastError());
        closesocket(clientSocket);
        WSACleanup();
        return 1;
    }

    printf("Connected to server.\n");

    // 在这里可以进行数据发送和接收的操作

    // 关闭Socket
    closesocket(clientSocket);
    WSACleanup();

    return 0;
}

在这个例子中,connect 函数用于连接到指定的服务器。如果连接成功,程序将输出 “Connected to server.”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值