WinsockPragramming(2) Client(C++版)

本文介绍了一个简单的TCP客户端创建过程,包括初始化套接字库、创建套接字句柄、设置地址结构、发送连接请求、数据收发以及关闭套接字等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建客户端与创建服务器流程类似,只是有稍许不同,我在这里不详细叙述。
创建客户端流程
1、初始化套接字库

初始化套接字库代码:

WSAData data;//定义WSAData变量
WOED wVersionRequested=MAKEWORD(2,0);//定义套接字库版本号
::WSAStartup(wVersionRequested,&data);//初始化套接字库

2、创建套接字句柄

创建套接字句柄代码:

SOCKET s;//定义套接字句柄
s=::socket(AF_INET,SOCK_STREAM,0);//创建并返回套接字句柄

3、地址结构设置及字节顺序转换

地址结构设置及字节顺序转换代码:

sockaddr_in addr;//定义套接字地址结构变量
in_addr in_add;//定义IP地址结构变量
addr.sin_fimily=AF_INET;//指定地址家族为TCP/IP
addr.sin_port=htons(80);//指定端口号
addr.sin_addr.S_un.S_addr=inet_addr('127.0.0.1');//将字符串IP转换为网络字节顺序排列的IP
char address[]=inet_ntoa(addr.sin_addr.S_un.S_addr)//将网络字节顺序排列的IP转换为字符串IP

4、发送连接请求

发送连接请求代码

::connect(s,(sockaddr*)&addr,sizeof(addr));

5、数据收发

数据收发代码:

::send(s1,sztext,sizeof(sztext),0);
::recv(s,sztext,sizeof(sztext),0);

6、关闭套接字

关闭套接字代码:

::closesocket(s);

7、释放套接字库

释放套接字库代码:

::WSACleanup();

完整源码:

/*Client.cpp*/

#include <winsock2.h>//包含头文件
#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"WS2_32.lib")//显式连接套接字库

int main(){

    //初始化套接字库
    WSADATA data;//定义WSADATA结构体对象
    WORD w=MAKEWORD(2,0);//定义版本号
    ::WSAStartup(w,&data);//初始化套接字库

    char sztext[10]={0};

    //创建套接字句柄
    SOCKET s;//定义连接套接字和数据收发套接字句柄
    s=::socket(AF_INET,SOCK_STREAM,0);//创建TCP套接字

    //地址结构设置及字节转换
    sockaddr_in addr;//定义套接字地址结构
    addr.sin_family=AF_INET;//初始化地址结构
    addr.sin_port=htons(75);//设置端口号
    addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

    printf("客户端已经启动\r\n");//输出提示信息

    //发送连接请求
    ::connect(s,(sockaddr*)&addr,sizeof(addr));

    //接收服务器的数据
    ::recv(s,sztext,sizeof(sztext),0);
    printf("%s\r\n",sztext);

    //关闭套接字句柄
    ::closesocket(s);

    //释放套接字库
    ::WSACleanup();

    if(getchar()){
        return 0;
    }else{
        ::Sleep(100);//应用休眠0.1秒
    }


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值