当前位置: 首页 > news >正文

网络编程套接字API

一. linux平台

1.创建套接字
成功返回文件描述符,失败返回-1
int socket (int __domain, int __type, int __protocol) ;
2.套接字绑定IP地址和端口号
成功返回0,失败返回-1
int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
3.开启监听套接字
成功返回0,失败返回-1
int listen (int __fd, int __n) __THROW;
4.受理连接请求
成功返回文件描述符,失败返回-1int accept (int __fd, __SOCKADDR_ARG __addr,socklen_t *__restrict __addr_len);
5.发送数据
成功返回写入的字节数,失败返回-1
ssize_t write (int __fd, const void *__buf, size_t __n) __wur;
6.接收数据
成功返回接收的字节数(若遇到文件尾返回0),失败返回-1
ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;
7.关闭套接字
成功返回0,失败返回-1
int close (int __fd);
8.优雅的关闭套接字
extern int shutdown (int __fd, int __how) __THROW;
9.发送连接请求
成功返回0,失败返回-1
int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
10.域名获取IP地址
extern struct hostent *gethostbyname (const char *__name);
11.IP地址获取域名
extern struct hostent *gethostbyaddr (const void *__addr, __socklen_t __len,int __type);
12.获取套接字的可选项
int
extern int getsockopt (int __fd, int __level, int __optname,void *__restrict __optval,socklen_t *__restrict __optlen) __THROW;
13.设置套接字的可选项
/* Set socket FD's option OPTNAME at protocol level LEVELto *OPTVAL (which is OPTLEN bytes long).Returns 0 on success, -1 for errors.  */
extern int setsockopt (int __fd, int __level, int __optname,const void *__optval, socklen_t __optlen) __THROW;

二. Windows平台

1.Winsock库的初始化

进行Winsock编程时,首先必须调用WSAStartup函数,设置程序中用到的Winsock版本,并初始化相应版本的库。

成功返回0,失败返回非0的错误代码值
int
WSAAPI
WSAStartup(_In_ WORD wVersionRequested,_Out_ LPWSADATA lpWSAData);
2.Winsock库的注销

进行Winsock编程时,首先必须调用WSAStartup函数,设置程序中用到的Winsock版本,并初始化相应版本的库。

成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
WSACleanup(void);
1.创建套接字
成功返回套接字句柄,失败返回INVALID_SOCKET
SOCKET
WSAAPI
socket(_In_ int af,_In_ int type,_In_ int protocol);
2.套接字绑定IP地址和端口号
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
bind(_In_ SOCKET s,_In_reads_bytes_(namelen) const struct sockaddr FAR * name,_In_ int namelen);
3.开启监听套接字
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
listen(_In_ SOCKET s,_In_ int backlog);
4.受理连接请求
成功返回套接字句柄,失败返回INVALID_SOCKET
SOCKET
WSAAPI
accept(_In_ SOCKET s,_Out_writes_bytes_opt_(*addrlen) struct sockaddr FAR * addr,_Inout_opt_ int FAR * addrlen);
5.发送数据
成功返回发送字节数,失败返回SOCKET_ERROR
int
WSAAPI
send(_In_ SOCKET s,_In_reads_bytes_(len) const char FAR * buf,_In_ int len,_In_ int flags);
6.接收数据
成功返回接收字节数(收到EOF时为0),失败返回SOCKET_ERROR
int
WSAAPI
recv(_In_ SOCKET s,_Out_writes_bytes_to_(len, return) __out_data_source(NETWORK) char FAR * buf,_In_ int len,_In_ int flags);
7.关闭套接字
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
closesocket(_In_ SOCKET s);
8.优雅关闭套接字
int
WSAAPI
shutdown(_In_ SOCKET s,_In_ int how);
9.发送连接请求
成功返回0,失败返回SOCKET_ERROR
int
WSAAPI
connect(_In_ SOCKET s,_In_reads_bytes_(namelen) const struct sockaddr FAR * name,_In_ int namelen);
10.域名获取IP地址
struct hostent FAR *
WSAAPI
gethostbyname(_In_z_ const char FAR * name);
11.地址获取域名
struct hostent FAR *
WSAAPI
gethostbyaddr(_In_reads_bytes_(len) const char FAR * addr,_In_ int len,_In_ int type);
12.获取套接字的可选项
int
WSAAPI
getsockopt(_In_ SOCKET s,_In_ int level,_In_ int optname,_Out_writes_bytes_(*optlen) char FAR * optval,_Inout_ int FAR * optlen);
13.设置套接字的可选项
int
WSAAPI
setsockopt(_In_ SOCKET s,_In_ int level,_In_ int optname,_In_reads_bytes_opt_(optlen) const char FAR * optval,_In_ int optlen);
http://www.lryc.cn/news/66452.html

相关文章:

  • 数字藏品的价值和意义
  • Unity物理系统脚本编程(上)
  • Java基础(十七)File类与IO流
  • 跑步课程导入能力,助力科学训练
  • MySQL---8、创建和管理表
  • 图像分类简单介绍
  • 很多博主用Markdown格式文章?直呼真不错!
  • 【2023/05/07】汇编语言
  • AI 生成第3篇测试文章:怎么编写测试计划?
  • 怎么洗稿容易过稿-在线洗稿软件
  • 图书馆客流人数统计分析系统方案
  • linux命令之crontab详解
  • 浅谈一下接口工具(jmeter、postman、swagger等)
  • 面试题:react、 vue中的key有什么作用? (key的内部原理)
  • C++之继承
  • 轻松掌握!Pandas的数据添加技巧,3秒学会更高效的方法
  • 层次结构工程命名建议
  • Google Play应用广告该如何运作
  • Java版电子招投标系统源码之了解电子招标投标全流程
  • 能源设备智能维修AR远程作业指导平台降低运营成本
  • 【实验笔记】深度学习中的确定性Uncertainty in Deep Learning(资料汇总,不断更新)
  • 第七章 Bash 操作
  • JS知识点
  • FFmpeg YUV 编码 H264
  • cuda-trt 学习
  • Spot CEO:我们为什么选择Babylon.js而不是Three.js
  • arm安装pyrealsense
  • day36_jdbc
  • C++好难(6):模板初阶
  • Windows 10字体模糊发虚! 如何解决?