linux网络编程 华清,网络编程(华清远见内部培训资料).ppt

网络编程(华清远见内部培训资料)

地址结构的一般用法 定义一个struct sockaddr_in类型的变量并清空 struct sockaddr_in myaddr; memset(&myaddr, 0, sizeof(myaddr)); 填充地址信息 myaddr.sin_family = PF_INET; myaddr.sin_port = htons(8888); myaddr.sin_addr.s_addr = inet_addr(“00”); 将该变量强制转换为struct sockaddr类型在函数中使用 bind(listenfd, (struct sockaddr*)(&myaddr), sizeof(myaddr)); unsigned long inet_addr(char *address); address是以’\0’结尾的点分IPv4字符串。该函数返回32位的地址。如果字符串包含的不是合法的IP地址,则函数返回-1。例如: struct in_addr addr; addr.s_addr = inet_addr(" 00 "); char* inet_ntoa(struct in_addr address); address是IPv4地址结构,函数返回一指向包含点分IP地址的静态存储区字符指针。如果错误则函数返回NULL 地址转换函数 listen int listen (int sockfd, int backlog); sockfd:监听连接的套接字 backlog 指定了正在等待连接的最大队列长度,它的作用在于处理可能同时出现的几个连接请求。 DoS(拒绝服务)攻击即利用了这个原理,非法的连接占用了全部的连接数,造成正常的连接请求被拒绝。 返回值: 0 或 -1 完成listen()调用后,socket变成了监听socket(listening socket). accept() int?accept(int?sockfd,?struct?sockaddr?*addr, socklen_t?*addrlen) ; 返回值:已建立好连接的套接字或-1 头文件 #include #include ? sockfd : 监听套接字 addr : 对方地址 addrlen:地址长度 listen()和accept()是TCP服务器端使用的函数 int new_accepted_fd = accept (listen_fd, (struct sockaddr *) client_addr, 指针: 接收连接的sockaddr_in结构体的长度 一个新的已连接的socket (-1 if error) 接受客户连接的socket, 即 listening socket client_addr_length); 接收外来连接的地址信息,如果不关心,可置为NULL accept ( ) 函数 connect() int?connect(int?sockfd,?struct?sockaddr?*serv_addr, int?addrlen); 返回值:0 或 -1 头文件: #include #include ? sockfd : socket返回的文件描述符 serv_addr : 服务器端的地址信息? addrlen : serv_addr的长度 connect()是客户端使用的系统调用。 int status = connect (socket_fd, (struct sockaddr *) &addr, sizeof(addr)); struct sockaddr结构, 描述服务器的端口和 IP 地址 struct sockaddr 结构的字节长度 return code (-1 if error) socket_fd returned by socket() system call connect( ) 函数 send() ssize_t send(int socket, const void *buffer, size_t length, int flags); 返回值: 成功:实际发送的字节数 失败:-1, 并设置errno 头文件: #include buffer : 发送缓冲区首地址 length : 发送的字节数 flags : 发送方式(通常为0) int status = send (socket_fd, out_buffer, MAX_BUFFER_SIZE, 0); return code (-1 if

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值