linux网络编程概念(一)
AF表示地址族(address family)
PF表示协议族(protocol family)
domain参数
AF_UNIX 内核中通信 sockaddr_un
AF_INET 通过ipv4 sockaddr_in
AF_INET6 通过ipv6 sockaddr_in6
socket分为两种类型,一种是流(TCP),一种是数据报(UDP)
其中流是面向链接的可靠的但是不支持保留消息边界,数据报不是面向链接也不可看的但是可以保留消息边界。
#include<sys/socket.h>
//创建一个socket
//type参数指定socket类型(SOCK_STREAM或者SOCK_DGRAM),protocol参数指定为0即可,也可指定为非零值
int socket(int domain,int type,int protocol); //成功返回文件描述符,失败返回-1
//将socket绑定到地址
//sockfd就是socket的返回值,addr参数是一个指针,指向一个指定该socket绑定到的地址的结构,addrlen参数指定了地址结构的大小
int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);//成功返回0,失败-1
//struct sockaddr结构的定义
sa_family_t sa_family;
char saz_data[14];
//监听接入链接(被动)
//backlog参数允许相知未决连接(客户端在服务器调用accept()之前调用connect())的数量,在这个限制之内的连接请求会立即成功
int listen(int sockfd,int backlog); //成功返回0,失败-1
//接受连接
//该函数创建一个新socket,该新socket会与执行sonnect()的对等socket进行连接
int accept(int sockfd,struct sockaddr *addr,socklen_t *addrlen);` //成功返回文件描述符,失败返回-1
//连接到对等socket
int connect(int sockfd,const struct sockaddr *addr,socklen_t addrlen);//成功返回0,失败-1
//连接终止
close();
ssize_t recvfrom(int sockfd,void *buffer,size_t length,int flags,struct sockaddr *src_addr,socklen_t *addrlen); //成功返回收到的字节数,失败-1
ssize_t sendto(int sockfd,const void *buffer,size_t length,int flags,const struct sockaddr *dest_addr,socklen_t addrlen); //成功返回发送的字节数,失败-1
linux网络编程概念(一)的更多相关文章
- 【深入浅出Linux网络编程】 "开篇 -- 知其然,知其所以然"
[深入浅出Linux网络编程]是一个连载博客,内容源于本人的工作经验,旨在给读者提供靠谱高效的学习途径,不必在零散的互联网资源中浪费精力,快速的掌握Linux网络编程. 连载包含4篇,会陆续编写发出, ...
- Linux网络编程&内核学习
c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: ...
- Linux网络编程入门 (转载)
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- Linux网络编程必看书籍推荐
首先要说讲述计算机网络和TCP/IP的书很多. 先要学习网络知识才谈得上编程 讲述计算机网络的最经典的当属Andrew S.Tanenbaum的<计算机网络>第五版,这本书难易适中. &l ...
- [转] - Linux网络编程 -- 网络知识介绍
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- 【转】Linux网络编程入门
(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户 ...
- 《转》Linux网络编程入门
原地址:http://www.cnblogs.com/duzouzhe/archive/2009/06/19/1506699.html (一)Linux网络编程--网络知识介绍 Linux网络编程-- ...
- 服务器编程入门(4)Linux网络编程基础API
问题聚焦: 这节介绍的不仅是网络编程的几个API 更重要的是,探讨了Linux网络编程基础API与内核中TCP/IP协议族之间的关系. 这节主要介绍三个方面的内容:套接字( ...
- Linux网络编程(四)
在linux网络编程[1-3]中,我们编写的网络程序仅仅是为了了解网络编程的基本步骤,实际应用当中的网络程序并不会用那样的.首先,如果服务器需要处理高并发访问,通常不会使用linux网络编程(三)中那 ...
随机推荐
- sass的加减乘除
运算 时单位要一样 否则报错 除法时 要加() width: (100px / 2); 符号在已有的数学表达式中时,也会被认作除法符号,就不要加() .box { width: 100px / 2 + ...
- DevExpress v18.1新版亮点——Reporting篇(三)
用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress Reporting v18.1 的新功能,快来下载试用新版本 ...
- Centos7部署Flannel网络(八)
1.为Flannel生成证书 [root@linux-node1 ssl]# vim flanneld-csr.json { "CN": "flanneld", ...
- 201621123001 《Java程序设计》第8周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 Answer: 源 ...
- git 继续前进篇
* git 输入 git log (--all)命令后出现<END>标记? 按q退出历史记录列表即可 * 继续前一天的 继续推送到github 步骤看图 先 链接到 之前工作区 的 文 ...
- L312 难看懂的
There are few sadder sights than 8 pile of fan letters ,lovingly decorated with hand drawings,suffer ...
- JavaWeb:c3p0配置问题java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector
错误显示 java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector at dbdemo.JdbcUtils.<clinit> ...
- C# Notepad++ 环境配置
第一种方法,使用NppExec插件 1.下载安装插件 NppExec https://nchc.dl.sourceforge.net/project/npp-plugins/NppExec/NppEx ...
- 日期和API
Java1.0对日期和时间的支持只能依赖java.util.Date类,年份的起始选择是1900你那,月份的起始是从0开始计算的.它的返回值中包含了JVM的默认市区CET,即中欧时间.在Java1.1 ...
- 2.14 加载Firefox配置
2.14 加载Firefox配置(略,已在2.1.8讲过,请查阅2.1.8节课) 回到顶部 2.14-1 加载Chrome配置 一.加载Chrome配置chrome加载配置方法,只需改下面一个地方,u ...