21xrx.com
2024-11-05 19:43:35 Tuesday
登录
文章检索 我的文章 写文章
C++ Socket 发送功能
2023-07-05 13:32:58 深夜i     --     --
C++ Socket 发送 功能

C++是一种强类型、静态类型的编程语言,被广泛应用于软件工程和计算机科学领域。C++的Socket实现支持网络编程,可以用于实现网络通信功能,包括发送和接收数据。本文将介绍C++ Socket的发送功能。

发送数据的前提是建立连接。C++提供了socket()函数帮助我们创建套接字对象。其原型如下:


int socket(int domain, int type, int protocol);

其中domain参数定义了通信域,常用的有AF_INET和AF_INET6,表示IPv4和IPv6协议。type参数定义了套接字类型,常用的有SOCK_STREAM和SOCK_DGRAM,分别表示面向连接和无连接的数据传输方式。protocol参数指定协议类型,通常设置为0以让系统自动选择。

建立socket之后,我们需要将其绑定到一个本地端口,并指定远程IP地址和端口号。这可以通过bind()和connect()函数实现。比如:


struct sockaddr_in addr = { 0 };

addr.sin_family = AF_INET;

addr.sin_port = htons(9000);

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

if (bind(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) {

  perror("bind failed");

  exit(1);

}

if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) {

  perror("connect failed");

  exit(1);

}

以上代码将套接字绑定到本地9000端口,并连接到本地IP地址为127.0.0.1的服务器端口。如果绑定或连接失败,会输出错误信息并退出程序。

成功建立连接后,就可以使用send()函数发送数据了。其原型如下:


ssize_t send(int sockfd, const void *buf, size_t len, int flags);

其中sockfd为套接字文件描述符,buf为需要发送的数据缓冲区地址,len为缓冲区大小,flags为标志位。成功发送时,该函数返回发送数据大小,失败则返回-1。

以下是一个发送数据的例子:


char* data = "hello";

int size = strlen(data);

int bytes_sent = send(sock, data, size, 0);

if (bytes_sent < 0) {

  perror("send failed");

  exit(1);

} else {

  printf("%d bytes sent\n", bytes_sent);

}

以上代码定义了一个字符串"hello",将其发送到连接的对端。send()函数返回发送数据的大小,如果小于0则说明发送失败。

总之,C++的Socket发送功能可以通过socket()函数创建套接字,通过bind()和connect()函数建立连接,通过send()函数发送数据。这些函数封装了底层协议和系统调用,让我们能够更方便地实现网络通信功能。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复