在C++中从头开始制作 TCP 套接字
Making a TCP socket from scratch in C++
我正在尝试在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()
。
相关文章:
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- C++ TCP 套接字 | 无法将"std::__cxx11::字符串"转换为"const
- ASIO 的 TCP 套接字::async_wait() 并在此之后关闭套接字
- Visual Studio(C++):如何使用TCP套接字发送多个值
- TCP套接字(客户端-服务器)recv()返回-1值
- C++中TCP套接字的recv函数
- 通过 TCP 套接字发送大型 base64 字符串
- 提升 ASIO TCP 套接字 1.70 不向后兼容
- 尝试连接到 TCP 套接字 (Linux) 时连接被拒绝
- 如何知道请求是否完全使用 TCP 套接字接收?
- Qt TCP 套接字 - 写入超过 15 个字节
- 同一提升 TCP 套接字对象上的多个连接
- 如何使用 recv 或 C++ 中的读取功能从 tcp 套接字读取大请求
- 如何<double>通过TCP套接字将CLI 列表^发送到本机C++?
- SOCAT,将TCP套接字转发到Unix套接字,将recvmsg()更改为read(),删除辅助数据
- 强制终止和重新生成 TCP 套接字应用程序时无法重用端口
- 通过 TCP 套接字发送结构 C++
- SIGPIPE C++确定哪个 TCP 套接字已断开连接
- 通过Qt-tcp套接字更改Qt-GUI
- C# 客户端到C++服务器 Tcp 套接字连接错误