当前位置:首页 > 行业动态 > 正文

c 网络编程实例

以下是一个网络编程实例:使用Python的socket库创建一个简单的客户端和服务器,实现基本的消息传递功能。

基于TCP协议的简单聊天程序

1、服务器端代码

创建套接字:使用socket()函数创建一个TCP套接字。int server_fd = socket(AF_INET, SOCK_STREAM, 0);

绑定地址和端口:通过bind()函数将套接字与本地IP地址和端口号绑定,如struct sockaddr_in address;address.sin_family = AF_INET;address.sin_addr.s_addr = INADDR_ANY;address.sin_port = htons(PORT);bind(server_fd, (struct sockaddr *)&address, sizeof(address));

监听连接:调用listen()函数使套接字进入监听状态,等待客户端的连接请求。listen(server_fd, 3);表示允许最多3个客户端连接请求在队列中等待。

接受连接:当有客户端发起连接时,使用accept()函数接受连接,并返回一个新的套接字用于与该客户端通信,如int new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen);

c 网络编程实例  第1张

数据传输:使用read()write()函数(或recv()send()函数)进行数据的接收和发送。read(new_socket, buffer, 1024);用于接收客户端发送的数据,write(new_socket, message, strlen(message));用于向客户端发送数据。

关闭套接字:通信结束后,使用close()函数关闭套接字,如close(new_socket);close(server_fd);

2、客户端代码

创建套接字:同样使用socket()函数创建一个TCP套接字。int sock = socket(AF_INET, SOCK_STREAM, 0);

连接服务器:通过connect()函数连接到服务器的IP地址和端口号,如struct sockaddr_in serv_addr;serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(PORT);inet_pton(AF_INET, "127.0.0.1", &serv_addr.sin_addr);connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));

c 网络编程实例  第2张

数据传输:使用read()write()函数(或recv()send()函数)与服务器进行数据的交互。send(sock, message, strlen(message), 0);用于向服务器发送数据,recv(sock, buffer, 1024, 0);用于接收服务器发送的数据。

关闭套接字:通信完成后,使用close()函数关闭套接字,如close(sock);

基于UDP协议的简单通信程序

1、服务器端代码

创建套接字:使用socket()函数创建一个UDP套接字。int sockfd = socket(AF_INET, SOCK_DGRAM, 0);

c 网络编程实例  第3张

绑定地址和端口:通过bind()函数将套接字与本地IP地址和端口号绑定,如struct sockaddr_in servaddr;servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = INADDR_ANY;servaddr.sin_port = htons(PORT);bind(sockfd, (const struct sockaddr *)&servaddr, sizeof(servaddr));

接收数据:使用recvfrom()函数接收客户端发送的数据,并获取客户端的地址信息。struct sockaddr_in cliaddr;socklen_t len = sizeof(cliaddr);int n = recvfrom(sockfd, (char *)buffer, 1024, MSG_WAITALL, (struct sockaddr *)&cliaddr, &len);buffer[n] = '

0