超级详细的客户端服务器简单通信
来源:互联网 发布:oracle distinct 优化 编辑:程序博客网 时间:2024/06/03 17:40
**
超级详细的客户端服务器简单通信
**
通信流程图
//Service端#include <iostream>#include <WinSock2.h>#pragma comment(lib,"ws2_32") //Windows Sockets应用程序接口using namespace std;#define maxLen 4096 //最大字段长度enum {PORT=19111}; //选择较大的端口号即可int main(){ WSADATA wd; //用来存储被WSAStartup函数调用后返回的Windows Sockets数据 WSAStartup(0x0202, &wd); //完成Winsock服务的初始化 //socket根据指定的地址族、数据类型和协议来分配一个套接口的描述字及其所用的资源 //建立socket通信描述符并返回 SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); //指明地址信息 AF_INET:IPv4 网络协议的套接字类型 //htons()将整型变量从主机字节顺序转变成网络字节顺序 sockaddr_in sa = { AF_INET, htons(PORT) }; //将套接字与机器上一定的端口关联 int n = bind(sock, (sockaddr*)&sa, sizeof(sa)); if (n < 0){ //返回值小于0出错 cout << GetLastError() << endl; return -1; } //创建一个套接口并监听申请的连接. //5:等待连接队列的最大长度。 listen(sock, 5); int nLen = sizeof(sa); while (true){ //接受连接,一旦有客户端发出连接,accept返回客户地址信息和一个新的socket,根据这个socket双方就可以开始收发数据 SOCKET socka = accept(sock, (sockaddr*)&sa, &nLen); while (true){ char buf[maxLen]; //缓存区 //从一个套接口接收数据并缓存到buf中,返回数据长度 n = recv(socka, buf, sizeof(buf), 0); if (n <= 0) //出错终止 break; buf[n] = 0; //尾部添加结束符 cout << buf << endl; ///输出 } } return 0;}//Client端#include <iostream>#include <WinSock2.h>#pragma comment(lib,"ws2_32")using namespace std;#define maxLen 4096enum { PORT = 19111 }; int main(){ WSADATA wd; WSAStartup(0x0202, &wd); SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); sockaddr_in sa = { AF_INET, htons(PORT) }; //127.0.0.1 回环地址,设置服务器端的IP地址 //inet_addr() 把一个IP地址格式“A.B.C.D”转换成32bit的网络字节顺序 sa.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); //用于建立与指定socket的连接。 int n = connect(sock, (sockaddr*)&sa, sizeof(sa)); if (n < 0){ cout << GetLastError() << endl; return -1; } char buf[maxLen]; while (true){ cout << "请输入你要发送的文字【#退出】:"; cin >> buf; //向一个已经连接的socket发送数据 send(sock, buf, strlen(buf), 0); if (buf[0] == '#') break; } return 0;}[测试数据](http://img.blog.csdn.net/20171031112417466?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbml1MTUyNzMxMjIyOTU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
阅读全文
0 0
- 超级详细的客户端服务器简单通信
- 简单的客户端服务器通信程序
- 简单的客户端和服务器通信程序
- 基于scoket通信的简单客户端—服务器通信程序
- Java简单的客户端与服务器的建立与通信
- Java简单的客户端与服务器的建立与通信
- Java简单的客户端与服务器的建立与通信
- 基于TCPClient的客户端服务器的简单通信demo
- Python一个简单的通信程序(客户端 服务器)
- linux socket 编程一:简单的服务器和客户端通信
- linux 服务器/客户端 tcp通信的简单例子
- 【C#】Socket客户端与服务器的简单通信
- Linux C实现简单的UDP服务器客户端通信
- volley+Express实现简单的客户端服务器通信
- 【C#】Socket客户端与服务器的简单通信
- Python实现udp协议的简单服务器和客户端通信
- socket通信 简单的客户端和服务器的通信 服务器的代码
- 多线程编程实例----服务器客户端简单通信
- 51nod 1488 帕斯卡小三角 单调栈维护凸壳+二分
- 在HTML 里面 <div> <br> <p> <span>的区别
- Makefile模板解析
- ABP官方文档(七)【依赖注入】
- onSaveInstanceState和onRestoreInstanceState
- 超级详细的客户端服务器简单通信
- JS中获取标签的宽和高
- linux入门8
- ofbiz实战——学期管理界面以及代码
- 9、10两月生活点滴--找工作的历程
- fastboot权限问题
- ElasticSearch数据备份与恢复
- monkey测试
- MyEclipse使用总结——MyEclipse10安装SVN插件