c++ socket简单封装

本文介绍了如何对C++中的Socket进行简单封装,包括Mysocket、TcpSocket、TcpServerSocket和TcpClientSocket的实现,以及对应的测试代码server.cpp和client.cpp。通过这个框架,可以为TCP和UDP提供统一的操作接口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单封装 并不实际应用

框架图

Mysocket 主要是定义TCP和UDP的一些相同的操作,需要的他们各自去实现。

 Mysocket.h

#ifndef MYSOCKET_H
#define MYSOCKET_H


class MySocket
{
public:
	MySocket();
	~MySocket();
	// 创建一个套接字
	virtual int Create(){};

	// IO操作
	virtual int Send(){};
	virtual int Recvice(){};

	// 关闭
	virtual void Close(){};

     

};

MySocket::MySocket()
{
    
}

MySocket::~MySocket()
{


}


#endif // !MYSOCKET

TcpSocket 首先实现一些客户端和服务端公用的接口,然后利用虚函数定义一些他们各自需要实现的接口。

TcpSocket.h

#ifndef TCPSOCKET_H
#define TCPSOCKET_H

#include <sys/types.h>
#include <sys/socket.h>
#include "MySocket.h"

#include <stdlib.h>

class TcpSocket 
	: public MySocket
{

   public:

	TcpSocket();
	~TcpSocket();

	// 重写覆盖
	int Create() override;
	int Send() override;
	int Recvice() override;
	void Close() override;



	// server端操作
	virtual int Bind(char *IP,int PORT){};
	virtual int Listen(){};
	virtual int Accept(){};


	// client操作
	virtual int Connect(char *IP,int PORT){};


	int fd; // socket描述符
	int fd1; // aceept接受描述符
	char rbuf[1024];
	char sbuf[1024];

};



#endif // !TCPSOCKET_H

TcpSocket.cpp

#include "TcpSocket.h"

#include <iostream>
#include <unistd.h>
using namespace std;


TcpSocket::TcpSocket()
{

}

TcpSocket::~TcpSocket()
{
	Close(); 
}




int TcpSocket::Create()
{
	int f = socket(AF_INET, SOCK_STREAM, 0);
	if(f != -1){
		cout << "socke创建成功:" << f << endl;
	}
	return f;

}



int TcpSocket::Send()
{

	write(fd, sbuf, sizeof(sbuf) - 1);

	return 0;
}

int TcpSocket::Recvice()
{
	
		int s = read(fd1, rbuf, sizeof(rbuf) - 1);
		if(s > 0){

			cout << "client:" << rbuf << endl;
		}
		// if(s == -1){
		// 	// cout << "连接中断" << endl;
		// 	break;
		// }
    
	return s;
}
void TcpSocket::Close()
{
	shutdown(fd, 2);
	shutdown(fd1, 2);

}

 TcpServerSocket实现服务端特有的功能

  TcpServerSocket.h

#ifndef TCPSERVERSOCKET_H
#define TCPSERVERSOCKET_H
#include <sys/types.h>
#include <sys/socket.h>

#include "TcpSocket.h"



class TcpServerSocket : public TcpSocket
{
public:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值