当前位置: 首页 > wzjs >正文

网站设计规划品牌运营策划方案

网站设计规划,品牌运营策划方案,如何查询网站打开速度变慢,网站备案渝设计模式 文章目录 设计模式一、socket.h 接口(interface)二、socket.cpp 实现(implementation)三、server.cpp 使用封装(main 函数)四、client.cpp 使用封装(main 函数)五、退出方法…

设计模式

文章目录

  • 设计模式
    • 一、`socket.h` 接口(interface)
    • 二、`socket.cpp` 实现(implementation)
    • 三、`server.cpp` 使用封装(main 函数)
    • 四、`client.cpp` 使用封装(main 函数)
    • 五、退出方法
    • 六、终端输出

一、socket.h 接口(interface)

#ifndef SOCKET_H
#define SOCKET_H#include <string>
using std::string;class Socket
{
public:Socket();~Socket();bool bind(int port);bool listen(int backlog = 5);int accept();bool connect(const string &ip, int port);  // ✅ 客户端连接方法int fd() const { return m_sockfd; } // 可选:暴露 sockfd 方便客户端用private:int m_sockfd;
};#endif // SOCKET_H

二、socket.cpp 实现(implementation)

// socket.cpp
#include "socket.h"#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <cstring>
#include <cstdio>
#include <cerrno>using std::string;Socket::Socket()
{m_sockfd = ::socket(AF_INET, SOCK_STREAM, 0);if (m_sockfd < 0){printf("Socket creation failed: errno=%d, errmsg=%s\n", errno, strerror(errno));}
}Socket::~Socket()
{if (m_sockfd >= 0){::close(m_sockfd);}
}bool Socket::connect(const string &ip, int port)
{sockaddr_in addr;std::memset(&addr, 0, sizeof(addr));addr.sin_family = AF_INET;addr.sin_port = htons(port);if (::inet_pton(AF_INET, ip.c_str(), &addr.sin_addr) <= 0){printf("Invalid IP address: %s\n", ip.c_str());return false;}int ret = ::connect(m_sockfd, (struct sockaddr*)&addr, sizeof(addr));if (ret < 0){printf("Connect failed: errno=%d, errmsg=%s\n", errno, strerror(errno));return false;}return true;
}void Socket::close()
{if (m_sockfd >= 0){::close(m_sockfd);m_sockfd = -1;}
}

三、server.cpp 使用封装(main 函数)

#include "socket.h"#include <iostream>
#include <unistd.h>    // read(), write()
#include <cstring>     // memsetint main()
{Socket server;if (!server.bind(8888)){std::cerr << "Failed to bind port 8888" << std::endl;return 1;}if (!server.listen()){std::cerr << "Failed to listen on port 8888" << std::endl;return 1;}std::cout << "Server listening on port 8888..." << std::endl;while (true){int client_fd = server.accept();if (client_fd < 0){continue; // accept failed}char buffer[1024];ssize_t n = ::read(client_fd, buffer, sizeof(buffer) - 1);if (n > 0){buffer[n] = '\0';std::cout << "Received: " << buffer << std::endl;std::string response = "Echo: ";response += buffer;::write(client_fd, response.c_str(), response.size());}::close(client_fd);}return 0;
}

四、client.cpp 使用封装(main 函数)

#include "socket.h"#include <iostream>
#include <unistd.h>     // read(), write()
#include <cstring>      // strlen()int main()
{Socket client;if (!client.connect("127.0.0.1", 8888)){std::cerr << "Failed to connect to server." << std::endl;return 1;}std::cout << "Connected to server." << std::endl;std::string input;while (true){std::cout << "Enter message: ";std::getline(std::cin, input);if (input == "exit")break;::write(client.fd(), input.c_str(), input.size());char buffer[1024];ssize_t n = ::read(client.fd(), buffer, sizeof(buffer) - 1);if (n > 0){buffer[n] = '\0';std::cout << "Server response: " << buffer << std::endl;}else{std::cout << "Server closed connection." << std::endl;break;}}return 0;
}

五、退出方法

  1. 客户端:
    当你在客户端输入:
Enter message: exit

客户端程序会退出(break 出循环)。

  1. 服务器:
    • 当前版本是永不退出的死循环
    • 你可以使用 Ctrl+C 来中断服务器进程

六、终端输出

  1. 终端 1:服务器
$ ./server
Server listening on port 8888...
Received: hello
Received: world
  1. 终端 2:客户端
$ ./client
Connected to server.
Enter message: hello
Server response: Echo: helloEnter message: world
Server response: Echo: worldEnter message: exit

文章转载自:

http://aA8aYWLU.xbmwh.cn
http://jFuTHrn9.xbmwh.cn
http://mfJ2sm8R.xbmwh.cn
http://tgbaKBct.xbmwh.cn
http://OZmvtvl7.xbmwh.cn
http://L9Ap1Jsk.xbmwh.cn
http://0jXrPl77.xbmwh.cn
http://FhnqbcvE.xbmwh.cn
http://1nR4nKPk.xbmwh.cn
http://KJnCf4pX.xbmwh.cn
http://GV0mDUs5.xbmwh.cn
http://sBJGOVd6.xbmwh.cn
http://VtQdKrn0.xbmwh.cn
http://DVf0ekwv.xbmwh.cn
http://URC7HwfB.xbmwh.cn
http://MrRyg22v.xbmwh.cn
http://7gH7OtRQ.xbmwh.cn
http://M77gG6sc.xbmwh.cn
http://qliD3tcd.xbmwh.cn
http://StDEfG6B.xbmwh.cn
http://fieTrI7d.xbmwh.cn
http://bUVbL4Yj.xbmwh.cn
http://4Zg1Mh8J.xbmwh.cn
http://m1fYToYk.xbmwh.cn
http://uVMhJLf4.xbmwh.cn
http://dIlTBWbP.xbmwh.cn
http://QkQong8b.xbmwh.cn
http://VzruH97X.xbmwh.cn
http://5lVvH5L6.xbmwh.cn
http://r75DHf5R.xbmwh.cn
http://www.dtcms.com/wzjs/707024.html

相关文章:

  • 烟台网站建设九七祁东网站建设
  • 网站建设对企业的发展wordpress制作主题容易吗
  • 手机版网站开发html5网站建设需求书
  • 自助广告位网站源码怎么通过网路访问自己做的网站
  • 无锡制作网站价格h5制作软件下载
  • php可以做网站布局吗同城招聘工作信息附近
  • 设计师效果图网站上海城乡建设管理局网站保障房板块
  • 临泉做网站网站推广技术
  • 视觉网络网站山西省和城乡建设厅网站
  • app和网站的成本区别著名设计网站deviantart的id模板
  • 阿里云建公司网站猫窝博客 wordpress
  • 网站后台开发步骤wordpress口腔
  • 成都 php 网站wordpress api chm
  • 做外贸网站注册什么邮箱中国兰州网官网
  • 网站模版一样 内容不同侵权吗WordPress料神
  • 地方宣传网站建设的必要性建设网站的程序
  • 有口碑的南昌网站设计烟台广告公司联系方式
  • 通辽网站开发为什么网站百度搜不到了
  • 网站名字和域名沃尔玛超市网上购物
  • 怎样把自己做的网站发到网上新网域名管理平台
  • 天河网站建设方案平台不得诱导下载
  • 上海网站制作工作室网站开发与设计需要哪些技术
  • 简 wordpress 主题沈阳百度首页优化
  • seo做的最好的网站河南建设工程一体化
  • 中国建设银行网站宁波网页设计个人简介代码
  • 免费网站模板 带后台怎么学php网站开发
  • 营销网站建设软件下载wordpress 按字数 广告
  • 珠海网站建设贵公司网站备案取消前置审批
  • 下城区住房和城市建设局网站做网站销售好不好
  • 自己做的网站怎么让别人看到广州自助网站搭建制作公司