57 lines
1.9 KiB
C
57 lines
1.9 KiB
C
|
// 本文件主要用于接受发送端的连接,数据的收发以及处理等等功能
|
||
|
#pragma once
|
||
|
|
||
|
#include <iostream>
|
||
|
#include <string>
|
||
|
#include <string.h>
|
||
|
#include <sys/socket.h>
|
||
|
#include <arpa/inet.h>
|
||
|
#include <unistd.h>
|
||
|
|
||
|
using namespace std;
|
||
|
|
||
|
// TCP
|
||
|
class MySocket
|
||
|
{
|
||
|
private:
|
||
|
int m_server_fd; // 服务端套接字文件描述符
|
||
|
int m_client_fd; // 客户端套接字文件描述符
|
||
|
struct sockaddr_in m_server_addr; // 服务端地址结构体
|
||
|
struct sockaddr_in m_client_addr; // 客户端地址结构体
|
||
|
|
||
|
public:
|
||
|
// 构造与析构函数
|
||
|
MySocket();
|
||
|
~MySocket();
|
||
|
|
||
|
bool InitServer(int port); // 初始化服务端
|
||
|
bool AcceptClient(); // 接受客户端连接
|
||
|
bool SendData(const std::string &data); // 发送数据
|
||
|
bool SendData(const char *data, size_t size); // 发送数据
|
||
|
bool SendLargeData(const string &data, size_t chunkSize);
|
||
|
string ReceiveData(); // 接收数据
|
||
|
string ReceiveLargeData(size_t expectedSize, size_t chunkSize);// 接收大数据
|
||
|
void CloseSocket(); // 关闭套接字
|
||
|
void CloseClientSocket(); // 关闭客户端套接字
|
||
|
void CloseServerSocket(); // 关闭服务端套接字
|
||
|
string GetClientIP() { return inet_ntoa(m_client_addr.sin_addr); } // 获取客户端IP地址
|
||
|
int GetClientPort() { return ntohs(m_client_addr.sin_port); } // 获取客户端端口号
|
||
|
};
|
||
|
|
||
|
// UDP
|
||
|
class MyUDP
|
||
|
{
|
||
|
private:
|
||
|
int m_sockfd; // UDP套接字文件描述符
|
||
|
struct sockaddr_in m_server_addr; // 对端地址结构体
|
||
|
|
||
|
public:
|
||
|
MyUDP(); // 构造函数
|
||
|
~MyUDP(); // 析构函数
|
||
|
|
||
|
bool InitServer(const string &ip, int port); // 初始化UDP服务端
|
||
|
bool SendData(const std::string &data); // 发送数据
|
||
|
string ReceiveData(); // 接收数据
|
||
|
void CloseSocket(); // 关闭套接字
|
||
|
};
|