c语言怎么编写通信程序

时间:2025-01-18 00:23:00 游戏攻略

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;

}

```

客户端代码