网络编程套接字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.受理连接请求
成功返回文件描述符,失败返回-1
 int 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 LEVEL
   to *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
    );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值