As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。
已关闭8年。
我正在尝试在C++中设置一个简单的TCP套接字,而不使用任何非标准库。
我想制作一个客户端套接字和一个服务器客户端,并从客户端向服务器传递一个整数。有人可以给我一个服务器和客户端类的简单示例吗?
到这里...现在,您可以像读取其他任何文件一样读写“s”了。
在服务器上,您做了一些不同的操作:
现在,您可以像读取任何文件一样对“c”进行读/写。 “s”是监听套接字,在该套接字上您只能执行
已关闭8年。
我正在尝试在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++ - 在C++中从头开始制作TCP套接字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12876716/