我不想长篇大论---我要谈的调用系统函数socket()。下面是他的原型:
#include<sys/types.h>
#include<sys/socket.h>
int socket(intdomain, int type, int protocol);
但是这些参数干什么的呢?他们允许你使用哪种套接字(IPv4还是IPv6;TCP还是UDP)。
它曾经是人们将这些值进行硬编码,你也可以这么做。(domain可以选择PF_INET或者PF_INET6;type可以选择SOCK_STREAM或者SOCK_DGRAM;protocol设置为0,或者你可以调用getprotobyname()来查找你想要的协议,“tcp”或“UDP” 。)
译者注:SOCK_STREAM等同于TCP;SOCK_DGRAM等同于UDP。所以你不用费二遍事再作一次J
(编者在这儿又叙述了一下PF_*与AF_*的一些关系)
译者注:他们其实是等同的,有兴趣的读者可以看《UnixNetwork Programming》第一卷中第四章第2节中的“AF_xxxVersus PF_xxx”
你真正要做的是把调用getaddrinfo()得到的结果值,直接给socket()函数使用像下面这样:
int s;
struct addrinfohints, *res;
// do the lookup
// [pretend wealready filled out the “hints” struct]
getaddrinfo(www.example.com, “http”, &hints,&res);
// [again, youshould do error-checking on getaddrinfo(), and walk
// the “res”linked list looking for valid entries instead of just
// assuming thefirst one is good (like many of these example do.)
// See the sectionon client/server for real examples.]
s =socket(res->ai_family, res->ai_socktype, res->ai_protocol);
socket()函数只是简单地返回给你一个套接字描述符,以供其后的其它系统函数使用;或者返回-1错误。全局变量errno是设置错误值的。(errno详见man文档)
好,好,好!但是使用这样的方式有什么益处吗?答案就是:简洁!
分享到:
相关推荐
Beej’s Guide to Network Programming
C程序员套接字编程指南。 它提供了同时支持IPv6和IPv4的简单客户端和服务器的完整示例。
### Beej's Guide to Network Programming Using Internet Sockets #### 知识点一:网络编程基础概念 - **网络编程**:是指开发能够通过网络(如互联网)与其他计算机进行通信的应用程序的技术。 - **互联网套接字...
### Beej's Guide to Network Programming – 使用互联网套接字 #### 一、介绍与受众定位 **《Beej's Guide to Network Programming》**是一部由Brian "Beej" Hall编写的经典网络编程指南,专注于互联网套接字的...
网络编程经典书,学C++的必看,英文原版
《Beej Guide to Network Programming》是一本深受Linux网络编程初学者欢迎的书籍,它以其易懂的语言和实用的示例深入浅出地介绍了网络编程的基础知识。这本书的中文完整版,"Beej Guide to Network Programming简体...
### Beej's Guide to Network Programming – 简体中文版 #### 1. 前言 本指南旨在为那些在网络编程方面遇到挑战的程序员提供一份实用且易于理解的资源。如果你正在寻找一种简单的方式去理解和掌握网络编程的核心...
### 网络编程书籍《Beej’s Guide to Network Programming》知识点解析 #### 一、书籍简介 《Beej’s Guide to Network Programming Using Internet Sockets》是一本由Brian "Beej" Hall编写的关于网络编程的经典...
标题《Beej's Guide to Network Programming.pdf》和描述《网络编程》揭示了本文档所涉及的主要领域为网络编程。网络编程是计算机程序或软件组件之间通过网络进行通信和数据交换的过程。网络编程的核心在于使用套接...
标题《Beej Guide for Network Programming》和描述中提及的《Beej's Guide to Network Programming Using Internet Sockets》表明,该文档是一份详细且易于理解的网络编程指南,尤其专注于使用C语言和Socket进行...
### Beej's Guide to Network Programming Using Internet Sockets #### 知识点概览 - **网络编程基础**:包括socket的概念及其在Linux环境下的应用。 - **数据结构与处理**:涉及网络编程中的数据结构(如`struct ...