linux服务器-客户端的最小模型
来源:互联网 发布:mysql 5.7 key buffer 编辑:程序博客网 时间:2024/05/17 08:34
在linux下开发自己的服务器客户端程序,我们追求一切程序从最小模型开始,就是最简单最容易扩展的一种应用框架。
习惯,我喜欢将自己需要g++的文件编写在sh文件中,每次,我只需要 sh g++.sh就ok了,在一切的可能情况下提高自己的工作效率。
linux客户端模型
#include <iostream>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <arpa/inet.h>#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 <<endl;}if(n < 0)perror("recv error");close(sockfd); // 关闭套接字连接return 0;}
linux客户端模型:
#include <iostream>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#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; }
你所需要的服务根据你的业务,进行扩展,这是服务器入门级别的代码哦。必须会。
- linux服务器-客户端的最小模型
- linux环境下基于UDP的 客户端服务器模型
- Linux网络编程[UDP客户端服务器的编程模型]
- 基于linux poll模型的tcp服务器------一个服务器如何与多个客户端进行通信?
- 单进程socket的服务器/客户端模型
- 一个简单的客户端-服务器模型
- JAVA实现简单的客户端服务器模型
- 客户端-服务器编程模型
- 客户端-服务器编程模型
- “服务器-客户端”模型网络程序设计
- 客户端-服务器-代理模型
- 【转】linux中使用命名管道实现客户端/服务器模型的进程间通信
- linux-socket tcp客户端服务器编程模型及代码详解
- Linux TCP客户端、服务器编程模型及实例
- Python 最小聊天服务器&&客户端
- 很好很好的select模型的客户端与服务器例子
- C-UDP-服务器客户端模型
- 【Linux网络编程】基于TCP协议 I/O多路转接(select) 的高性能回显服务器客户端模型
- 6410开发板无法卸载驱动的问题
- C++基础技巧笔记
- vs2008动态链接库编程
- vs2008静态链接库编程
- 理解cuda并行程序的规约思想
- linux服务器-客户端的最小模型
- mongodb的查询语句学习摘要
- 蒙特卡罗算法串行计算
- 蒙特卡罗算法并行计算
- OpenMP的学习初步
- 不断总结自己的异构程序开发思路
- 总结自己的基于gpu的异构程序开发流程
- CPU和GPU的区别
- 从0开始学习《GPU高性能运算之CUDA》——1