郁金香外挂技术-郁金香灬老师

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

郁金香终身VIP管理员QQ150330575项目合作(有实力的+)视频教程+每月更新+QQ群
飞郁视频分享(每周更新)
查看: 1275|回复: 0

C++简单客户端和服务器端通信

[复制链接]
发表于 2019-7-2 17:20:46 | 显示全部楼层 |阅读模式
[color=rgba(0, 0, 0, 0.75)]C++简单客户端和服务器端通信
2017年11月02日 15:48:38 海涛高软 阅读数 2862





INADDR_ANY 就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”


服务器有多个网卡,可能每个网卡上有不同的IP地址,所有通过INADDR_ANY发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都是我处理的



AF_INET(又称 PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的


对应于一个任务进行的每一次WSAStartup()调用,必须有一个WSACleanup()调用.只有最后的WSACleanup()做实际的清除工作;


良好的Windows Sockets应用程序会通过调用WSACleanup()指出它从Windows Sockets实现中注销.本函数因此可以用来释放分配给指定应用程序的资源.


int WSAStartup ( WORD wVersionRequested, LPWSADATA lpWSAData );
⑴ wVersionRequested:一个WORD(双字节)型数值,在最高版本的Windows Sockets支持调用者使用,高阶字节指定小版本(修订本)号,低位字节指定主版本号。
⑵lpWSAData 指向WSADATA数据结构的指针,用来接收Windows Sockets[1] 实现的细节。
WindowsSockets API提供的调用方可使用的最高版本号。高位字节指出副版本(修正)号,低位字节指明主版本号。


SOCK_STREAM提供面向连接的稳定数据传输,即TCP协议


inet_addr方法可以转化字符串,主要用来将一个十进制的数转化为二进制的数,用途多于ipv4的IP转化


服务器端:

[color=rgb(0, 153, 0) !important]#include <WinSock2.h>[color=rgb(0, 153, 0) !important]#include <stdio.h>[color=rgb(0, 153, 0) !important]#pragma comment(lib,"WS2_32.lib")[color=rgb(0, 0, 136) !important]void main(){    WSADATA wsd;    SOCKET [color=rgb(0, 0, 136) !important]server;                                            [color=rgb(136, 0, 0) !important]//服务器socket    SOCKADDR_IN addrSrv;    [color=rgb(0, 0, 136) !important]char sendBuf[[color=rgb(0, 102, 102) !important]100];    [color=rgb(0, 0, 136) !important]char recvBuf[[color=rgb(0, 102, 102) !important]100];    SOCKADDR_IN addrClient;    SOCKET [color=rgb(0, 0, 136) !important]client;                                            [color=rgb(136, 0, 0) !important]//连接的客户端socket    [color=rgb(0, 0, 136) !important]int len;    [color=rgb(0, 0, 136) !important]if (WSAStartup(MAKEWORD([color=rgb(0, 102, 102) !important]2, [color=rgb(0, 102, 102) !important]2), &wsd) != [color=rgb(0, 102, 102) !important]0)    {        printf([color=rgb(0, 153, 0) !important]"start up failed!\n");        [color=rgb(0, 0, 136) !important]return;    }    [color=rgb(0, 0, 136) !important]server = socket(AF_INET, SOCK_STREAM, [color=rgb(0, 102, 102) !important]0);                    [color=rgb(136, 0, 0) !important]//创建socket    addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);            [color=rgb(136, 0, 0) !important]//设置地址    addrSrv.sin_family = AF_INET;    addrSrv.sin_port = htons([color=rgb(0, 102, 102) !important]6000);                            [color=rgb(136, 0, 0) !important]//设置端口号    bind([color=rgb(0, 0, 136) !important]server, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));        [color=rgb(136, 0, 0) !important]//绑定    listen([color=rgb(0, 0, 136) !important]server, [color=rgb(0, 102, 102) !important]5);                                        [color=rgb(136, 0, 0) !important]//设置最多连接数    len = sizeof(SOCKADDR);    [color=rgb(0, 0, 136) !important]while ([color=rgb(0, 102, 102) !important]1)    {        [color=rgb(0, 0, 136) !important]client = accept([color=rgb(0, 0, 136) !important]server, (SOCKADDR*)&addrClient, &len);    [color=rgb(136, 0, 0) !important]//接收客户端连接        send([color=rgb(0, 0, 136) !important]client, [color=rgb(0, 153, 0) !important]"123徐海涛hunk xu", strlen(sendBuf) + [color=rgb(0, 102, 102) !important]1, [color=rgb(0, 102, 102) !important]0);            [color=rgb(136, 0, 0) !important]//发送信息客户端        recv([color=rgb(0, 0, 136) !important]client, recvBuf, [color=rgb(0, 102, 102) !important]100, [color=rgb(0, 102, 102) !important]0);                            [color=rgb(136, 0, 0) !important]//接收客户端数据        printf([color=rgb(0, 153, 0) !important]"%s\n", recvBuf);        closesocket([color=rgb(0, 0, 136) !important]client);    }    closesocket([color=rgb(0, 0, 136) !important]client);                                    [color=rgb(136, 0, 0) !important]//关闭连接    WSACleanup();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

客户端:

[color=rgb(0, 153, 0) !important]#include <winsock2.h>[color=rgb(0, 153, 0) !important]#include <stdio.h>[color=rgb(0, 153, 0) !important]#pragma comment(lib,"WS2_32.lib")[color=rgb(0, 0, 136) !important]void main(){    WSADATA wsd;    SOCKET sockClient;                                            [color=rgb(136, 0, 0) !important]//客户端socket    SOCKADDR_IN addrSrv;    [color=rgb(0, 0, 136) !important]char recvBuf[[color=rgb(0, 102, 102) !important]100];    [color=rgb(0, 0, 136) !important]if (WSAStartup(MAKEWORD([color=rgb(0, 102, 102) !important]2, [color=rgb(0, 102, 102) !important]2), &wsd) != [color=rgb(0, 102, 102) !important]0)    {        printf([color=rgb(0, 153, 0) !important]"start up failed!\n");        [color=rgb(0, 0, 136) !important]return;    }    sockClient = socket(AF_INET, SOCK_STREAM, [color=rgb(0, 102, 102) !important]0);                    [color=rgb(136, 0, 0) !important]//创建socket    addrSrv.sin_addr.S_un.S_addr = inet_addr([color=rgb(0, 153, 0) !important]"127.0.0.1");    addrSrv.sin_family = AF_INET;    addrSrv.sin_port = htons([color=rgb(0, 102, 102) !important]6000);    connect(sockClient, (SOCKADDR*)&addrSrv, [color=rgb(0, 0, 136) !important]sizeof(SOCKADDR));    [color=rgb(136, 0, 0) !important]//连接服务器端    recv(sockClient, recvBuf, [color=rgb(0, 102, 102) !important]100, [color=rgb(0, 102, 102) !important]0);                                [color=rgb(136, 0, 0) !important]//接收服务器端数据    send(sockClient, [color=rgb(0, 153, 0) !important]"hello world", strlen([color=rgb(0, 153, 0) !important]"hello world") + [color=rgb(0, 102, 102) !important]1, [color=rgb(0, 102, 102) !important]0);    [color=rgb(136, 0, 0) !important]//向服务器端发送数据    closesocket(sockClient);                                    [color=rgb(136, 0, 0) !important]//关闭连接    WSACleanup();    printf(recvBuf);    system([color=rgb(0, 153, 0) !important]"pause");}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26





郁金香外挂教程,学习中...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

限时限量优惠

QQ|小黑屋|手机版|郁金香外挂技术-郁金香灬老师 ( 苏ICP备10059359号 )

GMT+8, 2019-11-14 21:23 , Processed in 0.051846 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表