Server端代码:
#include <winsock2.h>
#include <stdio.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")
#include <vector>
#define SIZE_BUFFER 200
int main(){
WSAData wsadata;
WSAStartup(MAKEWORD(2,0),&wsadata);
SOCKET ssocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//创建一个TCP的Socket,但是没有绑定
struct sockaddr_in server;
server.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons(25000);//创建一个端口地址,指定地址和端口号
if(bind(ssocket,(sockaddr*)&server,sizeof(sockaddr_in)) == SOCKET_ERROR){
std::cout<<"error bind"<<std::endl;
}//绑定TCP Socket到指定的端口地址
if(listen(ssocket, 4) == SOCKET_ERROR){
std::cout<<"listen error"<<std::endl;
}
fd_set read_fdset;//读文件描述符
std::vector<int> sockets;//读端口的集合,每监听到一个请求,就会新建一个端口,并且存放到该集合中
while(true){
FD_ZERO(&read_fdset);
FD_SET(ssocket,&read_fdset);
int n = select(0,&read_fdset,NULL,NULL,0);
if(FD_ISSET(ssocket,&read_fdset)){//如果监听端口接收到了读的请求,也就是客户端发起了请求连接
SOCKET s = accept(ssocket,NULL,0);//创建一个新的端口
if(n!=SOCKET_ERROR){
sockets.push_back(s);
FD_SET(s,&read_fdset);//将当前端口设置到FD_READ中
}
}
for(int i=0;i<sockets.size();i++){//对每一个接收端口查看是否有数据接收
char buffer[SIZE_BUFFER];
memset(buffer,0,SIZE_BUFFER);
int len = 0;
if((len = recv(sockets[i],buffer,SIZE_BUFFER,0))>0){
printf("recv size = %d, and msg = %s\n",len,buffer);
}//len:0代表客户端连接了连接,负值代表连接出错,正值代表接收数据的长度
else if(len == 0){//客户端断开连接,删除集合
sockets.erase(sockets.begin()+i);
}
}
}
system("pause");
WSACleanup();
return 0;
}
Client端代码:
#include <winsock2.h>
#include <iostream>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main(){
WSADATA wdata;
WSAStartup(MAKEWORD(2,0),&wdata);
SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_family = AF_INET;
addr.sin_port = htons(25000);
SOCKET cons = socket(AF_INET,SOCK_STREAM,0);
//bind(cons,(sockaddr*)&addr,0);
SOCKET s = connect(cons,(sockaddr*)&addr,sizeof(SOCKADDR_IN));
if( s == SOCKET_ERROR ){
std::cout<< s << std::endl;
}
fd_set readset,writeset,exceptset;
FD_ZERO(&writeset);
FD_SET(s,&writeset);
while(true){
select(0,&readset,&writeset,&exceptset,0);
if(FD_ISSET(s,&writeset)){
int size = send(cons,"hello",6,0);
std::cout<<"send msg size = "<<size<<std::endl;
closesocket(s);
WSACleanup();
break;
}
}
system("pause");
WSACleanup();
return 0;
}
分享到:
相关推荐
HpSocket的demo,完整可运行,去除多余函数,只需将ClientDlg.h和ServerDlg.h中的Tcp改为Udp便可轻松改变协议
基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 C++ 实现矩阵压力数据采集及压力云图现实。 基于QT - SOCKET 的 ...
此DEMO使用标准C++控制台来实现,对于刚接触网络编程的新手来说可以更容易跟踪理解 HP-Socket 组件的工作流程,从而快速移植到自己的项目中。 此DEMO采用PACK模型,包含服务器及客户端的实现。PACK模型可以让你不用...
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。...
用C++编写的关于 TCP-socket端口通讯的实例,里面包含服务器端和客户端server+client,里面有大量的注释,通俗易懂
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等...
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程...
为了让使用者能方便快速地学习和使用HP-Socket,迅速掌握框架的设计思想和使用方法,特此精心制作了大量Demo示例(如:PUSH模型示例、PULL模型示例、PACK模型示例、性能测试示例以及其它编程语言示例)。HP-Socket...
HP-Socket 是一套通用的高性能 TCP/UDP Socket 框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口...
HP-Socket开发TCP Server。 简单地TCP Server,示例如何使用HP-Socket
C++入门C++入门C++入门C++入门C++入门C++入门
C++初学者教程 C++编程-菜鸟入门(清晰版)
为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思 想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、 ...信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。...为了让使用者能方便快速地学习和使用 HP-Socket
Microsoft Visual C++ 2015-2022 Redistributable (x64) - 14.31.31103
HP-Socket通讯框架官方教程
HP-Socket 是一套通用的高性能 TCP/UDP Socket 组件,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E、Java 等编程语言开发接口。HP-Socket ...
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件、客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口...
Microsoft Visual C++ 2015-2019 运行库合集,32位64位都有,解决缺失dll包问题。
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、 客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通 信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等...