[doubango Programmer's Guide] 10 Sockets and Network Functions(tinyNET) 翻译
来源:互联网 发布:蜂鸟网络 深圳 编辑:程序博客网 时间:2024/06/05 05:02
10 套接字与网络函数
所有的 与网络相关的函数都来自tinyNET工程。
在调用任何与网络相关的函数(tnet_*)前你必须先调用tnet_startup().结束使用网络相关函数时应当调用tnet_cleanup()。
startup函数将会检测当前机器是不是小端存储模式。要想使用所有的网络相关函数,就必须加入头文件#include “tinynet.h”。
10.1 套接字
由于性能的原因,所有用tinyNET创建出的套接字都是默认非阻塞的。新创建的套接字将会自动绑定给定的IP和端口号,并用它来进行通信。
tnet_socket_create()是用来创建并且绑定一个非阻塞套接字的。使用tnet_socket_create_2() 函数可以控制套接字是否绑定。同样这个函数也可以强制在堆中创建一个阻塞套接字。
一个套接字对象是这样定义的:
typedef struct tnet_socket_s{ TSK_DECLARE_OBJECT; tnet_socket_type_t type; tnet_fd_t fd; tnet_ip_t ip; uint16_t port; tnet_tls_socket_handle_t* tlshandle;}tnet_socket_t;
创建一个套接字:
// (create udp ipv4 or ipv6 socket)tnet_socket_t* socket = tnet_socket_create( TNET_SOCKET_HOST_ANY, // local ip address/hostname to bind to TNET_SOCKET_PORT_ANY, // local port number to bind to tnet_socket_type_udp_ipv46 // the socket type (IPv4 or IPv6) );// TNET_SOCKET_HOST_ANY --> bind to "0.0.0.0" or "::"// TNET_SOCKET_PORT_ANY --> bind to any available port
TNET_SOCKET_TYPE_IS_*宏用来决定:
- 套接字类型(流,报文)
- 套接字协议 (udp, tcp, tls, sctp, ipsec),
- IP版本 (ipv6, ipv4),
- …
套接字是一个定义好的对象,应该使用TSK_DECLARE_SAFE_FREE()宏对其进行销毁。套接字本身也将在被销毁时自动关闭。
10.2 传输
在传输层中,总是有一个主套接字来决定我们将以哪种方式进行传输(流,报文)。流式套接字能管理TCP,TLS 和SCTP几种套接字,而报文式套接字只能管理UDP套接字。两种传输方式都可以使用IPv4或者IPv6。
- [doubango Programmer's Guide] 10 Sockets and Network Functions(tinyNET) 翻译
- [doubango Programmer's Guide] 4.3.1 tinySAK 翻译
- [doubango Programmer's Guide] 4.3.2 tinySigComp 翻译
- [doubango Programmer's Guide] 1 Foreword
- [doubango Programmer's Guide] 5 Debugging 调试
- [doubango Programmer's Guide] 4.3.2 tinySigComp -->SigComp UDP compression 翻译
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 0)
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 1)
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 2、3)
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 4,5)
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 6)
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 6)
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 1)
- Java Card Technology for Smart Card's Architecture and Programmer's Guide (Zhiqun Chen)翻译版(PART 2、3)
- JDK1.6 Java Scripting Programmer's Guide 翻译
- ZooKeeper Programmer's Guide(ZooKeeper 3.4 Documentation)个人翻译
- ZooKeeper Programmer's Guide
- SAP ABAP STOP,EXIT,CHECK,RETURN
- Intent 用法
- 栈和堆存储学习总结
- 电子工程师必备基础知识
- linux界面操作程序
- [doubango Programmer's Guide] 10 Sockets and Network Functions(tinyNET) 翻译
- Android FrameWork——PackageManager框架
- jQuery中text()与 val() htm()的区别 小结
- scp命令详解,linux两台机器ssh无密码连接
- Hibernate关系映射 --- 一对一实例分析(双向关联,是基于主键的)
- CFileDialog过滤的用法
- 告诉你如何学C#
- Android调用WebService之服务端实现(一)
- 最大子段和绝对值