_linux下C++ socket网络编程——即时通信系统(含源码)
时间: 2023-10-30 11:05:58 浏览: 170
很高兴能够回答你的问题。以下是一个简单的即时通信系统的C++网络编程示例,基于Linux平台使用socket库进行开发。
客户端代码:
```c++
#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
using namespace std;
int main() {
// 创建socket
int client_socket = socket(AF_INET, SOCK_STREAM, 0);
// 配置服务器地址
sockaddr_in server_address{};
server_address.sin_family = AF_INET;
server_address.sin_port = htons(8080);
server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
// 连接服务器
int connect_result = connect(client_socket, (sockaddr *) &server_address, sizeof(server_address));
if (connect_result == -1) {
cout << "连接服务器失败!" << endl;
return -1;
}
// 发送消息
char message[1024] = {0};
while (true) {
cin.getline(message, sizeof(message));
if (strlen(message) == 0) {
continue;
}
send(client_socket, message, strlen(message), 0);
memset(message, 0, sizeof(message));
}
// 关闭socket
close(client_socket);
return 0;
}
```
服务器端代码:
```c++
#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
using namespace std;
int main() {
// 创建socket
int server_socket = socket(AF_INET, SOCK_STREAM, 0);
// 配置服务器地址
sockaddr_in server_address{};
server_address.sin_family = AF_INET;
server_address.sin_port = htons(8080);
server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
// 绑定socket和地址
bind(server_socket, (sockaddr *) &server_address, sizeof(server_address));
// 监听客户端连接
listen(server_socket, 10);
// 接受客户端连接
sockaddr_in client_address{};
socklen_t client_address_len = sizeof(client_address);
int client_socket = accept(server_socket, (sockaddr *) &client_address, &client_address_len);
// 接收消息
char message[1024] = {0};
while (true) {
int recv_result = recv(client_socket, message, sizeof(message), 0);
if (recv_result <= 0) {
break;
}
cout << "收到消息:" << message << endl;
memset(message, 0, sizeof(message));
}
// 关闭socket
close(client_socket);
close(server_socket);
return 0;
}
```
在上面的代码中,客户端和服务器端都使用了socket库中的函数来完成网络通信。客户端使用`socket`函数创建socket,使用`connect`函数连接服务器,并使用`send`函数发送消息。服务器端使用`socket`函数创建socket,使用`bind`函数将socket与服务器地址绑定,使用`listen`函数监听客户端连接,并使用`accept`函数接受客户端连接,最后使用`recv`函数接收客户端发送的消息。
当然,这只是一个简单的示例。在实际开发中,你需要考虑更多的细节,例如如何处理多个客户端连接、如何处理异常情况等等。
希望这个示例能够帮助你了解Linux下C++ socket网络编程的基本流程和方法。
阅读全文
相关推荐












