jelasin 的学生作业:
#include
#include
#include
#include
#include
#include
#include
#define SERVER_IP "127.0.0.1"
#define SERVER_PORT 8080
#define BUFFER_SIZE 1024
int main() {
int client_socket;
struct sockaddr_in server_addr;
char buffer[BUFFER_SIZE];
ssize_t bytes_received;
// 创建套接字
client_socket = socket(AF_INET, SOCK_STREAM, 0);
if (client_socket == -1) {
perror("socket创建失败");
exit(EXIT_FAILURE);
}
// 配置服务器地址结构
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
// 连接到服务器
if (connect(client_socket, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {
perror("连接服务器失败");
close(client_socket);
exit(EXIT_FAILURE);
}
printf("成功连接到服务器 %s:%d\n", SERVER_IP, SERVER_PORT);
printf("输入消息发送到服务器 (输入'quit'退出):\n");
while (1) {
// 从用户获取输入
printf("客户端> ");
fflush(stdout);
if (fgets(buffer, BUFFER_SIZE, stdin) == NULL) {
break;
}
// 检查退出条件
if (strncmp(buffer, "quit", 4) == 0) {
printf("客户端退出...\n");
break;
}
// 发送消息到服务器
ssize_t bytes_sent = send(client_socket, buffer, strlen(buffer), 0);
if (bytes_sent == -1) {
perror("发送消息失败");
break;
}
// 接收服务器响应
bytes_received = recv(client_socket, buffer, BUFFER_SIZE - 1, 0);
if (bytes_received > 0) {
buffer[bytes_received] = '\0';
printf("服务器响应: %s", buffer);
} else if (bytes_received == 0) {
printf("服务器关闭了连接\n");
break;
} else {
perror("接收消息失败");
break;
}
}
// 关闭套接字
close(client_socket);
return 0;
}
6 ./client
成功连接到服务器 127.0.0.1:8080
输入消息发送到服务器 (输入'quit'退出):
客户端> hello
服务器响应: word
客户端> quit
客户端退出...
➜ 6 nc -lvvp 8080
Listening on 0.0.0.0 8080
Connection received on localhost 46770
hello
word