C++ 实现 TCP 协议
使用 C++ 实现 TCP 协议需要使用 Windows 套接字 API。以下是一个简单的 C++ 示例代码,使用套接字 API 创建 TCP 客户端程序:
#include <iostream>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
int main() {
WSADATA wsaData
SOCKET ConnectSocket = INVALID_SOCKET
struct addrinfo *result = NULL, *ptr = NULL, hints
int iResult
// 初始化 Winsock
iResult = WSAStartup(MAKEWORD(2, 2), &wsaData)
if (iResult != 0) {
std::cout <<"WSAStartup failed: " <<iResult <<std::endl
return 1
}
ZeroMemory(&hints, sizeof(hints))
hints.ai_family = AF_UNSPEC
hints.ai_socktype = SOCK_STREAM
hints.ai_protocol = IPPROTO_TCP
// 解析服务器地址和端口
iResult = getaddrinfo("www.example.com", "80", &hints, &result)
if (iResult != 0) {
std::cout <<"getaddrinfo failed: " <<iResult <<std::endl
WSACleanup()
return 1
}
// 创建套接字并连接服务器
for (ptr = resultptr != NULLptr = ptr->ai_next) {
ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol)
if (ConnectSocket == INVALID_SOCKET) {
std::cout <<"socket failed: " <<WSAGetLastError() <<std::endl
WSACleanup()
return 1
}
iResult = connect(ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen)
if (iResult == SOCKET_ERROR) {
closesocket(ConnectSocket)
ConnectSocket = INVALID_SOCKET
continue
}
break
}
freeaddrinfo(result)
if (ConnectSocket == INVALID_SOCKET) {
std::cout <<"Unable to connect to server" <<std::endl
WSACleanup()
return 1
}
// 发送和接收数据
iResult = send(ConnectSocket, "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n", strlen("GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"), 0)
if (iResult == SOCKET_ERROR) {
std::cout <<"send failed: " <<WSAGetLastError() <<std::endl
closesocket(ConnectSocket)
WSACleanup()
return 1
}
char recvbuf[512]
do {
iResult = recv(ConnectSocket, recvbuf, sizeof(recvbuf), 0)
if (iResult >0) {
std::cout.write(recvbuf, iResult)
}
else if (iResult == 0) {
std::cout <<"Connection closed" <<std::endl
}
else {
std::cout <<"recv failed: " <<WSAGetLastError() <<std::endl
}
} while (iResult >0)
// 关闭套接字和清理 Winsock
closesocket(
订立合同的程序,是指当事人双方就合同的一般条款经过协商一致并签置书面协议的过程。 合同订立 的过程就是当事人各方就合同条款通过协商达成协议的过程。这一过程分为 要约 和承诺两阶段: 1、要约。要约也称订约提议,是当事人一方向他方提出订立合同的建议。要约中要有与对方订立合同的意愿和合同应有的主要条款、要求对方作出答复的期限等内容。在要约约定的对方答复期限内,要约人受其要约的约束。 2、承诺。承诺也称接受订约提议,是当事人一方完全同意要约方提出要约的主要内容和条件的答复。要约人收到承诺时,双方就要订立合同如收到承诺时已具备符合法律规定的合同形式,合同就成立了。 《 民法典 》第四百七十一条,当事人订立合同,可以采取要约、承诺方式或者其他方式。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)