理解网络编程与套接字

本节先引出概念,具体的函数参数以及网络编程会在后续讲解

服务器端套接字创建

1.调用socket函数创建套接字

int socket(int domain,int type,int protocol);

2.调用bind函数分配ip地址和端口号

int bind(int sockfd,struct sockaddr* myaddr,socklen_t addrlen);

3.调用listen函数转为可接收请求的状态

int listen(int sockfd,int backlog);

4.调用accept函数受理链接请求

int accept(int sockfd,struct sockaddr* addr,socklen_t* addrlen);

客户端套接字

1.调用socket创建套接字

2.调用connect函数向服务器发送请求链接

int connect(int sockfd,struct sockaddr *serv_addr,socklen_t addrlen);

基于Windows平台的实现

准备

  1. 导入头文件winsock2.h

  2. 链接ws2_32.lib库

    在配置属性附加依赖项中添加ws2_32.lib

Winsock的初始化

int WSAStaruo(WORD wVersionRequested,LPWSADATA lpWSADATA);

参数:wVersionRequested用来指定winsock的版本。可以通过MAKEWORD宏函数来构建版本信息

MAKEWORD(1,2) //版本号为1.2

lpWASDATA需要传入WSADATA结构体变量的地址

int WSACleanup(void); 

该函数将Winsock相关库归还给Windows操作系统,无法再调用Winsock相关函数

基于Windows的套接字函数

SOCKET socket(int af,int type,int protocol);
SOCKET accept(SOCKET s,struct sockaddr* addr,int* addrlen);
int closesocket(SOCKET s);

我们会发现,Windows中的socket句柄为SOCKET。这个句柄就相当于Linux中的文件描述符。其他的函数都与Linux相似

基于Windows的I/O函数

Windows需要严格区分文件I/O和套接字I/O函数

int send(SOCKET s,const char* buf,int len,int flags);

s:套接字句柄

buf:待传输数据的缓冲地址值

len:要传输的字节数

flags:参数

成功返回传输字节数,失败返回SOCKET_ERROR

int recv(SOCKET s,const char* buf,int len,int flags);

buf:保存数据的缓冲地址值

len:能接受的最大字节数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值