c++中udp和tcp的通信流程API
时间: 2023-08-01 22:11:00 浏览: 129
在C++中进行UDP和TCP通信的流程和API如下:
UDP通信流程:
1. 创建socket对象:使用socket()函数创建socket对象
2. 绑定本地IP地址和端口号:使用bind()函数绑定本地IP地址和端口号
3. 发送数据:使用sendto()函数发送数据
4. 接收数据:使用recvfrom()函数接收数据
UDP通信API:
1. 创建socket对象:int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
2. 绑定本地IP地址和端口号:struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sockfd, (struct sockaddr *)&addr, sizeof(addr));
3. 发送数据:struct sockaddr_in destAddr;
destAddr.sin_family = AF_INET;
destAddr.sin_port = htons(targetPort);
destAddr.sin_addr.s_addr = inet_addr(targetIP.c_str());
sendto(sockfd, data.c_str(), data.size(), 0, (struct sockaddr *)&destAddr, sizeof(destAddr));
4. 接收数据:struct sockaddr_in srcAddr;
socklen_t len = sizeof(srcAddr);
char buffer[1024];
int n = recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr *)&srcAddr, &len);
// 处理接收到的数据
TCP通信流程:
1. 创建socket对象:使用socket()函数创建socket对象
2. 绑定本地IP地址和端口号:使用bind()函数绑定本地IP地址和端口号
3. 监听端口号:使用listen()函数监听端口号
4. 接受连接:使用accept()函数接受连接请求,创建新的socket对象
5. 发送数据:使用send()函数发送数据
6. 接收数据:使用recv()函数接收数据
TCP通信API:
1. 创建socket对象:int sockfd = socket(AF_INET, SOCK_STREAM, 0);
2. 绑定本地IP地址和端口号:struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sockfd, (struct sockaddr *)&addr, sizeof(addr));
3. 监听端口号:listen(sockfd, backlog);
4. 接受连接:struct sockaddr_in clientAddr;
socklen_t len = sizeof(clientAddr);
int clientSockfd = accept(sockfd, (struct sockaddr *)&clientAddr, &len);
5. 发送数据:send(clientSockfd, data.c_str(), data.size(), 0);
6. 接收数据:char buffer[1024];
int n = recv(clientSockfd, buffer, sizeof(buffer), 0);
// 处理接收到的数据
注意:以上代码只是简单的示例,实际应用中需要对各种错误进行处理,例如错误码的返回值等。
阅读全文