您的位置:首页 > 其它

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]

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: