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网络编程(三)中那 ...
随机推荐
- 深入理解java虚拟机---虚拟机工具jstat(十七)
jstack---没什么用 jstack用于生成java虚拟机当前时刻的线程快照.线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因 ...
- ajax之同步异步详解
同步:一堆任务,按顺序去执行,只能一件件的来,如一个厨师做菜 异步:一堆任务,可以同时进行,如多个厨师做菜 ...
- java基础学习之抽象类
以下内容是自己学习后的一个备忘笔记,理解上肯定有很多问题,望有耐心的大神能给予指点,谢谢 定义:抽象是对事物的一个模糊定义,它主要对那些有共性功能但具体实现不同的对象进行抽象,提高代码的复用性和简洁性 ...
- <Spark><Running on a Cluster>
Introduction 之前学习的时候都是通过使用spark-shell或者是在local模式运行spark 这边我们首先介绍Spark分布式应用的架构,然后讨论在分布式clusters中运行Spa ...
- TensorFlow函数:tf.ones
tf.ones 函数 ones( shape, dtype=tf.float32, name=None ) 定义于:tensorflow/python/ops/array_ops.py. 请参阅指南: ...
- Beta阶段冲刺---Day1
一.Daily Scrum Meeting照片 二.讨论项目每个成员的昨天进展 由于今天是Beta阶段冲刺的第一天,因此每个成员没有昨日进展. 我们在昨天把未来五天的其他科目的作业都一起做完了(手动斜 ...
- usort 函数
function getNameFromNumber($num){ // Used to figure out what the Excel column name would be for a gi ...
- WHID Injector:将HID攻击带入新境界
HID Attack是最近几年流行的一类攻击方式.HID是Human Interface Device的缩写,意思是人机接口设备.它是对鼠标.键盘.游戏手柄这一类可以操控电脑设备的统称. 由于电脑对这 ...
- TCP/IP协议的四个层及作用
- 2017第八届蓝桥杯C/C++ B组省赛-购物单
标题: 购物单 小明刚刚找到工作,老板人很好,只是老板夫人很爱购物.老板忙的时候经常让小明帮忙到商场代为购物.小明很厌烦,但又不好推辞. 这不,XX大促销又来了!老板夫人开出了长长的购物单,都是有打折 ...