socket函数及参数
2015-06-08 09:30
471 查看
函数原型:
int socket(int domain, int type, int protocol);
domain:
即协议域,又称为协议族(family)
AF_INET : ipv4
AF_INET6 : ipv6
AF_LOCAL(或称AF_UNIX,Unix域socket)
AF_ROUTE
type:
SOCK_STREAM 1 /* stream socket */ 流(TCP)
SOCK_DGRAM 2 /* datagram socket */ 包(UDP)
SOCK_RAW 3 /* raw-protocol interface */ 原始
SOCK_RDM 4 /* reliably-delivered message */可靠的数据包连接
SOCK_SEQPACKET 5 /* sequenced packet stream */ 有序的数据流
protocol:
常用的协议有
IPPROTO_TCP:TCP传输协议
IPPTOTO_UDP:UDP传输协议
IPPROTO_SCTP:STCP传输协议
IPPROTO_TIPC:TIPC传输协议
in_addr_t 一般为 32位的unsigned int, 使用函数in_addr_t inet_addr(const char* strptr)转化,如:
struct in_addr s;s.s_addr = inet_addr("192.168.1.69");[/code]
创建udp socket
int uSock = INVAIL_SOCKET;struct sockaddr_in udpsvr_addr;unsigned long bindaddr = INADDR_NONE;#ifdef WIN32WSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);#endif//bzero(&udpsvr_addr, sizeof(udpsvr_addr));memset(&udpsvr_addr, 0, sizeof(udpsvr_addr));udpsvr_addr.sin_family = AF_INET;udpsvr_addr.sin_port = htons(port);bindaddr = ((NULL == srcaddr) ? htonl(INADDR_ANY) : inet_addr(srcaddr));#ifdef WIN32udpsvr_addr.sin_addr.S_un.S_addr = bindaddr;#else //defined(linux)udpsvr_addr.sin_addr.s_addr = bindaddr;#endifif ((uSock = socket(AF_INET, SOCK_DGRAM, 0)) <= 0){perror("create udp socket");uSock = INVAIL_SOCKET;}if (bind(uSock, (struct sockaddr *)&udpsvr_addr, sizeof(udpsvr_addr)) < 0){closesocket(uSock);uSock = INVAIL_SOCKET;perror("udp bind error");}return uSock;[/code]
相关文章推荐
- CentOS下Gerrit代码评审服务器的搭建与使用
- listview和gridView中findViewWithTag和setTag使用
- 第三方支付业务及典型的对账过程
- jQuery实现导航栏的隐藏与显示效果
- C#从DataTable获取数据的方法
- 《实体解析与信息质量》- 2.1.7 信息质量的演变
- 不可或缺 Windows Native (16) - C++: 函数重载, 缺省参数, 内联函数, 函数模板
- Sonar升级遇到的那些事儿
- MySQL数据表数据清空
- ANTLR v4 安装以及试用 For Linux
- 4K加速普及,8K近在咫尺,下一个是?
- 程序员必备:Linux日常维护命令
- 基于云架构的网络安全事件检测研究
- 成为一个程序员真有那么难吗?
- 简单数据结构之顺序表(C++ 引用传递实现)
- ARM system call
- PageRank算法R语言实现
- SharePoint 2013 开发——构建工作流开发环境
- 黑马程序员---IOS基础---字符串数组及字符串函数
- 说说Python程序的执行过程