用tcp实现字符大小写转换
时间: 2024-02-18 14:05:49 浏览: 110
以下是使用TCP实现字符大小写转换的C++代码示例:
服务端代码:
```c++
#include <iostream>
#include <cstring>
#include <arpa/inet.h>
#include <unistd.h>
int main() {
// 创建TCP Socket
int server_socket = socket(AF_INET, SOCK_STREAM, 0);
// 绑定IP地址和端口号
struct sockaddr_in server_address;
memset(&server_address, 0, sizeof(server_address));
server_address.sin_family = AF_INET;
server_address.sin_port = htons(8000);
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
bind(server_socket, (struct sockaddr*)&server_address, sizeof(server_address));
// 监听客户端连接请求
listen(server_socket, 5);
std::cout << "等待客户端连接..." << std::endl;
while (true) {
// 接收客户端连接请求
struct sockaddr_in client_address;
socklen_t client_address_len = sizeof(client_address);
int client_socket = accept(server_socket, (struct sockaddr*)&client_address, &client_address_len);
std::cout << "客户端已连接:" << inet_ntoa(client_address.sin_addr) << std::endl;
while (true) {
char buffer[1024] = {0};
// 接收客户端发送的数据
int recv_len = recv(client_socket, buffer, sizeof(buffer), 0);
if (recv_len <= 0) {
break;
}
// 将字符转换为大写或小写
std::string str(buffer);
if (std::all_of(str.begin(), str.end(), ::isupper)) {
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
} else {
std::transform(str.begin(), str.end(), str.begin(), ::toupper);
}
// 发送转换后的数据给客户端
send(client_socket, str.c_str(), str.length(), 0);
}
// 关闭客户端连接
close(client_socket);
}
// 关闭服务端Socket
close(server_socket);
return 0;
}
```
客户端代码:
```c++
#include <iostream>
#include <cstring>
#include <arpa/inet.h>
#include <unistd.h>
int main() {
// 创建TCP Socket
int client_socket = socket(AF_INET, SOCK_STREAM, 0);
// 连接服务端
struct sockaddr_in server_address;
memset(&server_address, 0, sizeof(server_address));
server_address.sin_family = AF_INET;
server_address.sin_port = htons(8000);
inet_pton(AF_INET, "127.0.0.1", &server_address.sin_addr);
connect(client_socket, (struct sockaddr*)&server_address, sizeof(server_address));
while (true) {
// 获取用户输入
std::string str;
std::cout << "请输入字符串(输入q退出):";
std::getline(std::cin, str);
if (str == "q") {
break;
}
// 发送数据给服务端
send(client_socket, str.c_str(), str.length(), 0);
char buffer[1024] = {0};
// 接收服务端发送的数据
int recv_len = recv(client_socket, buffer, sizeof(buffer), 0);
if (recv_len > 0) {
std::string str(buffer);
std::cout << "转换后的字符串:" << str << std::endl;
}
}
// 关闭连接
close(client_socket);
return 0;
}
```
运行服务端代码和客户端代码后,可以输入字符串进行大小写转换,并且服务端会将转换后的字符串发送给客户端。