Socket编程客户端原理简单介绍

本文简单介绍了Socket编程客户端的原理,主要包括初始化套接字、创建套接字、连接服务器、发送/接收数据以及关闭连接等步骤。通过WSAStartup获取套接字信息,并确保与服务器使用相同版本。接着,创建套接字时选择适当的地址族和类型,如AF_INET和SOCK_STREAM。之后,使用connect函数连接服务器,然后通过send/recv进行数据交换,最后调用closesocket和WSACleanup进行资源释放和清理。
摘要由CSDN通过智能技术生成

和服务端原理差不多,只是少了两个步骤.

客户端:
初始化套接字(WSAStartup)->创建套接字(socket)->连接服务器(connect)->发送/接收数据(send/recv)->关闭连接(closesocket,WSACleanup)

1.初始化套接字,也是获取套接字.
WSADATA是一个存放套接字信息的结构
利用WSAStartup函数来获取套接字信息并且存放到WSADATA

  //成功返回0,失败返回非零
  int WSAStartup(
  WORD wVersionRequested,  //需要的版本
  LPWSADATA lpWSAData      //套接字信息结构
);

获取到套接字信息后还要判断是否获取的是2.2版本的.
方法如下:

    //判断版本
    if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
    {
        printf("wVersion was not 2.2\n");
        return -1;
    }

2.创建套接字

//成功返回一个套接字,失败返回INVLID_SOCKET
SOCKET socket(
  int af,     // AF 表示ADDRESS FAMILY 地址族
  int type,   //套接字的类型
  int protocol//使用的传输协议
);

其中af的值可以是如下几个常用的:
AF_UNIX(本机通信)
AF_INET(TCP/IP – IPv4)
AF_INET6(TCP/IP – IPv6)
type的值可以是如下几个:
SOCK_STREAM(TCP流)
SOCK_DGRAM(UDP数据报)
SOCK_RAW(原始套接字)

注意:客户端的af,type都要和服务器的一样
3.连接服务器

//成功返回0,失败返回SOCKET_ERROR
int connect(
  SOCKET s,      //客户端套接字
  const struct sockaddr FAR* name,//服务器地址
  int namelen                     //长度
);

4.发送/接收数据

//成功返回发送的bytes失败返回SOCKET_ERROR
int send(
  SOCKET s,           //第二步创建的套接字
  const char FAR* buf,//要发送的数据
  int len,            //数据的长度
  int flags           //设为0
);
//成功返回接受到的bytes,连接关闭则返回0,失败返回SOCKET_ERROR 
int recv(
  SOCKET s,     //第二步创建的套接字
  char FAR* buf,//接收数据的缓存区
  int len,      //缓存区大小
  int flags     //设为0 
);

5.关闭所有连接并清理

`
//成功返回0,失败返回SOCKET_ERROR
int closesocket(
SOCKET s
);

WSACleanup();//清理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值