如何用C语言写一个TCP

2023-04-12 02:56:00 tcp 语言 如何用

如何用C语言写一个TCP服务器

要写一个TCP服务器,首先要了解TCP协议。TCP协议是传输控制协议,用于在两台计算机之间建立可靠的连接。TCP协议使用三次握手来建立连接,然后才能传输数据。

要写一个TCP服务器,首先要在计算机上安装套接字库,然后用C语言编写代码来实现TCP服务器的功能。

首先,要包含头文件:

#include

#include

#include

#include

#include

#include

#include

#include

然后,要定义一个服务器端的套接字:

int server_sockfd;//服务器端套接字

接下来,要定义服务器端的地址和端口号:

struct sockaddr_in server_addr;//服务器端网络地址结构体

定义客户端的套接字:

int client_sockfd;//客户端套接字

定义客户端的地址和端口号:

struct sockaddr_in client_addr;//客户端网络地址结构体

定义服务器端和客户端的地址长度:

socklen_t sin_size;

定义一个缓冲区,用来存放数据:

char buffer[BUFSIZ];//数据的缓冲区

定义一个文件描述符,用来接收客户端发来的文件:

int new_fd;

定义一个变量,用来接收从客户端接收到的数据:

int num;

首先,创建一个套接字:

server_sockfd = socket(AF_INET, SOCK_STREAM, 0);

如果创建成功,则返回一个非负值,如果创建失败,则返回-1。

接下来,要绑定套接字到服务器的地址上:

bzero(&server_addr, sizeof(server_addr));//将服务器的地址清零

server_addr.sin_family = AF_INET;//设置为IP通信

server_addr.sin_addr.s_addr = htonl(INADDR_ANY);//设置服务器的IP地址,让系统自动获取

server_addr.sin_port = htons(SERV_PORT);//设置服务器的端口号

bind(server_sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr));

调用bind函数之后,服务器的地址就被绑定到了套接字上。

接下来,要设置监听:

listen(server_sockfd, 5);

调用listen函数之后,服务器就可以接收客户端的连接了。

接下来,要从客户端接收数据:

sin_size = sizeof(client_addr);

client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_addr, &sin_size);

调用accept函数之后,服务器就可以从客户端接收数据了。

接下来,要接收客户端发来的文件:

new_fd = open("test.txt", O_RDWR|O_CREAT, 0644);

调用open函数之后,服务器就可以接收客户端发来的文件了。

接下来,要读取客户端发来的文件:

num = read(client_sockfd, buffer, sizeof(buffer));

调用read函数之后,服务器就可以读取客户端发来的文件了。

接下来,要向客户端发送数据:

write(client_sockfd, buffer, num);

调用write函数之后,服务器就可以向客户端发送数据了。

最后,关闭套接字:

close(server_sockfd);

close(client_sockfd);

调用close函数之后,服务器就可以关闭套接字了。

相关文章