C语言通信程序的编写可以涉及多个方面,包括基本的数据结构、套接字编程、文件传输、串口通信等。下面我将分别介绍一个简单的个人通讯程序、一个TCP客户端和服务器的示例,以及一个串口通信的示例。
个人通讯程序
```c
include include include // 定义通讯录项结构体 struct address_book_item { char name; char phone; }; // 定义通讯录结构体 struct address_book { struct address_book_item items; int count; }; // 新建通讯录 struct address_book* new_address_book() { struct address_book* book = (struct address_book*)malloc(sizeof(struct address_book)); book->count = 0; return book; } // 添加新的通讯录项 void add_address_book_item(struct address_book* book, struct address_book_item item) { book->items[book->count++] = item; } // 显示通讯录所有项 void show_address_book(struct address_book* book) { printf("Name\t\tPhone\n"); for (int i = 0; i < book->count; i++) { printf("%s\t%s\n", book->items[i].name, book->items[i].phone); } } int main() { struct address_book* book = new_address_book(); // 添加一些示例数据 struct address_book_item item1 = {"Alice", "1234567890"}; struct address_book_item item2 = {"Bob", "0987654321"}; add_address_book_item(book, item1); add_address_book_item(book, item2); // 显示通讯录 show_address_book(book); // 释放内存 free(book); return 0; } ``` TCP客户端和服务器示例 服务器端代码 ```c include include include include include include define PORT 12345 int main() { int server_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (server_sock == -1) { perror("socket"); exit(1); } struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(PORT); if (bind(server_sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { perror("bind"); exit(1); } if (listen(server_sock, 5) == -1) { perror("listen"); exit(1); } struct sockaddr_in client_addr; socklen_t client_addr_len = sizeof(client_addr); int client_sock = accept(server_sock, (struct sockaddr*)&client_addr, &client_addr_len); if (client_sock == -1) { perror("accept"); exit(1); } char message; read(client_sock, message, sizeof(message)); printf("Received: %s\n", message); send(client_sock, "Hello from server!", strlen("Hello from server!"), 0); close(client_sock); close(server_sock); return 0; } ``` 客户端代码