c 网络编程实例
- 行业动态
- 2025-02-16
- 4478
基于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);
。
数据传输:使用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));
。
数据传输:使用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);
。
绑定地址和端口:通过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] = '
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/28398.html