tcp通信简易C代码
时间: 2024-08-14 14:03:46 浏览: 35
TCP(Transmission Control Protocol)是一种基于连接的、可靠的传输层协议,在网络编程中通常用于客户端和服务器之间的数据交换。以下是一个简单的TCP通信的C代码示例,使用了`socket`库来进行TCP通信:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define PORT 8080
#define BUFFER_SIZE 1024
int main(int argc, char *argv[]) {
int server_socket, client_socket;
struct sockaddr_in server_addr, client_addr;
socklen_t addr_len = sizeof(client_addr);
char message[BUFFER_SIZE] = "Hello from server";
// 创建服务器套接字
if ((server_socket = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("Socket creation failed");
exit(EXIT_FAILURE);
}
// 设置服务器地址
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl(INADDR_ANY); // 使用任意地址
server_addr.sin_port = htons(PORT);
// 绑定并监听
if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
perror("Binding failed");
exit(EXIT_FAILURE);
}
listen(server_socket, 5); // 设置最大5个并发连接
// 接受客户端连接
printf("Server listening on %d...\n", PORT);
if ((client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &addr_len)) == -1) {
perror("Accepting connection failed");
exit(EXIT_FAILURE);
}
printf("Accepted connection from %s:%d\n",
inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
// 发送数据到客户端
if (send(client_socket, message, strlen(message), 0) == -1) {
perror("Sending data failed");
close(client_socket);
exit(EXIT_FAILURE);
}
// 关闭连接
close(client_socket);
return 0;
}
```
这个程序创建了一个简单的TCP服务器,等待客户端连接,并发送一条消息。如果你想让程序变成客户端去连接服务器,你需要稍微修改一下,主要是替换为`connect()`函数。