博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux服务器-客户端的最小模型
阅读量:7113 次
发布时间:2019-06-28

本文共 2989 字,大约阅读时间需要 9 分钟。

在linux下开发自己的服务器客户端程序,我们追求一切程序从最小模型开始,就是最简单最容易扩展的一种应用框架。

习惯,我喜欢将自己需要g++的文件编写在sh文件中,每次,我只需要 sh g++.sh就ok了,在一切的可能情况下提高自己的工作效率。

linux客户端模型

#include 
#include
#include
#include
#include
#define MAXLINE 100#define SA struct sockaddr#define SOCKET intusing namespace std;const char *ip = {"127.0.0.1"};const int port = 8124;int main(){ cout << "this is a client!" << endl; cout << "conn server ip:" << ip << endl; cout << "conn server port:" << port << endl; SOCKET sockfd; if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {// 创建一个套接字,tcp协议,流套接字,通信协议 perror("socket error"); return -1; } struct sockaddr_in servaddr; // 通信地址类型变量 memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(port); struct hostent *hp; hp = gethostbyname(ip); memcpy((char*)&servaddr.sin_addr, (char*)hp->h_addr, hp->h_length); if(connect(sockfd, (SA*)&servaddr, sizeof(servaddr)) < 0) // 建立连接 { perror("connect error"); return -1; } cout << "YOU:" << endl; string message("hello nihao"); //cin >> message; if(send(sockfd, message.c_str(), message.size(), 0) < 0) // 发送请求字符串 { perror("send error"); return -1; } int n; char recvline[MAXLINE+1]; while((n = recv(sockfd, recvline, MAXLINE, 0)) > 0) // 接受,阻塞 { recvline[n] = 0; cout << "recv from server: "<< recvline <

 

linux客户端模型:

#include 
#include
#include
#include
#define MAXLINE 100#define SA struct sockaddr#define SOCKET intusing namespace std;int main(){ cout << "this is a server!" << endl; struct sockaddr_in server,client; SOCKET listen_sock = socket(AF_INET, SOCK_STREAM, 0); // 创建监听套接字 if(listen_sock < 0) { perror("socket error"); return -1; } memset((char *)&server, 0, sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(8124); if(bind(listen_sock, (SA *)&server, sizeof(server)) < 0) // 绑定监听端口 { perror("bind error"); return -1; } listen(listen_sock, 5); // 监听 sockfd 一个已绑定未被连接的套接字描述符   backlog 队列 socklen_t n = (socklen_t)sizeof(client); SOCKET conn_sock = (SOCKET)accept(listen_sock, (SA *)&client, &n); // 创建连接套接字 if(conn_sock < 0) perror("accept error"); else { // 接受client请求信息 unsigned char buf[MAXLINE+1]; memset(buf, 0, sizeof(buf)); if((n = recv(conn_sock, buf, MAXLINE, 0)) < 0) perror("recv error"); else { buf[n] = 0; cout << "recv from client : " << buf << endl; } // 服务器处理业务/// // //// // 返回服务器处理结果字符串 if(send(conn_sock, "server!", 7, 0) < 0) perror("send error"); close(conn_sock); } close(listen_sock); return 0; }

你所需要的服务根据你的业务,进行扩展,这是服务器入门级别的代码哦。必须会。

转载于:https://www.cnblogs.com/viviman/archive/2012/11/21/2780546.html

你可能感兴趣的文章
《编写可读代码的艺术》——表面层次的改进
查看>>
RxJS Observable - 一个奇特的函数
查看>>
大型WEB架构设计
查看>>
小程序TAB列表切换内容动态变化,scrollview高度根据内容动态获取
查看>>
swoole_table 实现原理剖析
查看>>
你需要知道面试中的10个JavaScript概念
查看>>
TiDB RC4 Release
查看>>
阿里云有对手了!CDN横评:腾讯云优势明显
查看>>
Ajax常用方法
查看>>
Glide 简单流程分析
查看>>
Hmily 2.0.3 发布,高性能异步分布式事务 TCC 框架
查看>>
烟花年下岁月
查看>>
Java源码阅读之HashMap - JDK1.8
查看>>
Docker 构建统一的前端开发环境
查看>>
一文让你了解大数据时代,你的真实处境
查看>>
Problems at works
查看>>
Dell服务器系统安装后无法正常进入系统
查看>>
深入理解asp.net里的HttpModule机制
查看>>
java基础学习_常用类03_StringBuffer类、数组高级和Arrays类、Integer类和Character类_day13总结...
查看>>
Asp.net MVC Session过期异常的处理
查看>>