在C++中从头开始制作 TCP 套接字

Making a TCP socket from scratch in C++

本文关键字:TCP 套接字 从头开始 C++      更新时间:2023-10-16

我正在尝试在C++中设置一个简单的TCP套接字,而无需使用任何非标准库。我想创建一个客户端套接字和一个服务器客户端,并从客户端向服务器传递一个整数。有人可以给我一个简单的服务器和客户端类的例子吗?

C++没有

为套接字提供"标准库",但当然可以访问套接字的标准C库。

#include <sys/socket.h>
sockaddr_in addr;
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(destination_address_as_32bit_number);
addr.sin_port = htons(destination_port_number_as_16bit_number);
int s = socket(AF_INET, SOCK_STREAM, 0);
connect(s, &addr, sizeof(addr));

给你。。。 现在你可以像任何其他文件一样读写"s"。
在服务器上,您的做法略有不同:

#include <sys/socket.h>
sockaddr_in addr;
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = 0; // bind to all interface addresses
addr.sin_port = htons(local_port_number_as_16bit_number);
int s = socket(AF_INET, SOCK_STREAM, 0);
bind(s, &addr, sizeof(addr));
listen(s, 50);  // 50 (the backlog) isn't really used on modern systems
int c = accept(s, &addr, sizeof(addr));  // addr gets info about client

现在您可以像任何文件一样读/写"c"。 "s"是侦听套接字,您只在上面做accept()