以下是一个简单的示例代码,用C语言编写了一个TCP客户端和服务端程序,用于发送字符。
TCP客户端程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define SERVER_IP "127.0.0.1"
#define SERVER_PORT 8888
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT);
if (inet_pton(AF_INET, SERVER_IP, &(server_addr.sin_addr)) <= 0) {
perror("inet_pton");
exit(EXIT_FAILURE);
}
if (connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
perror("connect");
exit(EXIT_FAILURE);
}
char message[100];
printf("Enter message to send: ");
fgets(message, sizeof(message), stdin);
if (send(sock, message, strlen(message), 0) < 0) {
perror("send");
exit(EXIT_FAILURE);
}
close(sock);
return 0;
}
TCP服务端程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define SERVER_PORT 8888
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("socket");
exit(EXIT_FAILURE);
}
struct sockaddr_in server_addr, client_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(SERVER_PORT);
if (bind(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) {
perror("bind");
exit(EXIT_FAILURE);
}
if (listen(sock, 5) < 0) {
perror("listen");
exit(EXIT_FAILURE);
}
printf("Waiting for incoming connections...\n");
socklen_t client_addr_len = sizeof(client_addr);
int client_sock = accept(sock, (struct sockaddr*)&client_addr, &client_addr_len);
if (client_sock < 0) {
perror("accept");
exit(EXIT_FAILURE);
}
char message[100];
ssize_t recv_len = recv(client_sock, message, sizeof(message), 0);
if (recv_len < 0) {
perror("recv");
exit(EXIT_FAILURE);
}
printf("Received message: %s\n", message);
close(client_sock);
close(sock);
return 0;
}
你可以将这两段代码分别保存为tcp_client.c和tcp_server.c,然后使用C语言编译器编译运行它们。运行服务端程序后,再运行客户端程序,客户端程序会要求你输入要发送的消息,然后将消息发送给服务端程序,服务端程序会将接收到的消息打印出来。
请注意,这只是一个简单的示例,没有处理错误或异常情况。在实际应用中,你可能需要添加更多的错误处理和边界检查。