当前位置:首页 » 编程软件 » sctp编程

sctp编程

发布时间: 2022-02-28 22:57:14

A. linux网络编程需要怎么融合

知道这些是可以做最基本的嵌入式软件开发,以后的路还很长,如果想要在网络编程方向发展,建议继续学习一些协议,如http,sctp,tftp等,知道网络各个层的功能及整个网络架构。在这个网络通信的基础上实现音频的传输,还有数据库知识等,以后的路还很长,不要固步自封

B. 传输层协议SCTP在工程中到底有没有用常用吗我在看《unix网络编程》卷1第三版

常用!

C. UNIX网络编程的清华大学出版社出版图书

作者: (美)史蒂文斯,(美)芬纳,(美)鲁道夫 着,杨继张 译
出 版 社: 清华大学出版社
出版时间: 2006-1-1
页数: 848
I S B N : 9787302119746
包装: 平装
所属分类: 图书 >> 计算机/网络 >> 操作系统/系统开发 >> UNIX Solaris “这是一本专业人士渴望拜读的书,因为它巧妙地结合了实践经验、历史观点和深入涉及本领域获得的洞察力。阅读本书给我带来了乐趣,也使我获益匪浅,相信大家一定会有同感。”
——Sam Leffer
为了构建现今高度分布的网络应用和服务,大家务必深入掌握套接口等关键的网络编程API。《UNIX网络编程第1卷:套接口API(第3版)》一书为在各种环境下构建健壮的高性能网络互连系统提供了详尽的自始至终的指导。这个新版本基于W.Ri-chard Stevens先生久负盛誉的遗着,由两名一流的网络编程专家全面更新,融入当今至关重要的标准、实现和技术。
新的主题包括:
·POSIX单一UNIX规范第3版
·IPv6相关若干API(包括更新过的IPv6/IPv4互操作性的指导)
·新的SCTP传输协议
·基于IPsec的密钥管理套接口
·在FreeBSD 4.8/5.1、Linux2.4.7、Solaris 9、AIX 5.1、HP-UX 11i和MacOS/x 10.2.6上运行程序例子
·新的网络编程调试技术
·源特定多播API,它是PI多播广泛部署的关键催化剂
两名新作者还更新并拓展了Stevens先生关于如下UNIX网络相关标准和技术的权威性论述:
·TCP传输和UDP传输
·套接口编程:基本、高级、路由、原始等
·I/O:复用、非阻塞、信号驱动、异步等
·守护进程和inetd
·UNIX域协议
·ioctl操作
·广播和组播
·线程
·流
·程序设计:TCP迭代服务器、并发服务器、预先派生子进程服务器、预先线程服务器等
自1990年起,网络编程人员深入掌握所需技术的源泉是:W. Richard Stevens先生的单卷本UNIX Network Programming。他们有一个新版本可以汲取知识了,它是为迎接挑战而专门设计的。 本书第1版和第2版由已故UNIX网络专家W. Richard Stevens博士独自编写。本书是3版,由世界着名网络专家Bill Fenner和Andrew M. Rudoff执笔,根据近几年网络技术的发展,对上一版进行全面修订,增添了IPv6的更新过的信息、SCTP协议和密钥管理套接口的内容,删除了X/Open传输接口的内容。
本书全面深入地介绍了如何使用套接口API进行网络编程。全书从对套接口API的综合讨论开始,论述了基本编程内容后,即转入高级套接口编程的相关主题,包括IPv4与IPv6的互操作性、UNIX域协议、非阻塞I/O、路由套接口、广播、多播、线程、原始套接口、数据链路访问等,对于客户/服务器程序的各种设计方法也作了完整的探讨,最后还对流这种设备驱动机制作了深入分析。在附录中给出了IPv6、ICMPv6、虚拟网络等内容以及部分习题答案。
本书内容详尽且具权威性,几乎每章都提供精选的习题,是计算机和网络专业高年级本科生和研究生的首选教材,本书也可作为网络研究和开发人员的自学教材和参考书。 已故的W.Richard Stevens先生是UNIX Network Programming第1版和第2版的原作者,这两本书被公认为是UNIX网络编程的经典教科书。
Bill Fenner是位于加利福尼亚州Menlo Park的AT&T实验室的主要技术成员,专攻IP多播、网络管理和测量。他是IETF路由领域的主管之一,负责审批作为RFC发布的所有与路由有关的文档。
Andrew M.Rudoff是Sun Microsystems公司的资深软件工程师,专攻网络、操作系统内核、文件系统及高可用性软件体系结构。 第1部分 简介和TCP/IP?
第1章 简介
第2章 传输层:TCP、UDP和SCTP
第2部 分基本套接口编程?
第3章 套接口编程简介
第4章 基本TCP套接口编程
第5章 TCP客户/服务器程序例子?
第6章 I/O复用:select和poll函数
第7章 套接口选项
第8章 基本UDP套接口编程
第9章 基本SCTP套接口编程
第10章 SCTP客户/服务器程序例子
第11章 名字与地址转换
第3部分 高级套接口编程?
第12章 IPv4与IPv6的互操作性
第13章 守护进程和inetd超级服务器?
第14章 高级I/O函数
第15章 Unix域协议
第16章 非阻塞I/O
第17章 ioctl操作
第18章 路由套接口
第19章 密钥管理套接口?
第20章 广播
第21章 多播
第22章 高级UDP套接口编程
第23章 高级SCTP套接口编程
第24章 带外数据
第25章 信号驱动I/O
第26章 线程?
第27章 IP选项
第28章 原始套接口
第29章 数据链路访问
第30章 客户/服务器程序设计范式
第31章 流
第4部分 附录?

D. 跪求:linux网络编程,作者:理乍得史蒂文斯,发我邮箱:[email protected] ,小弟感激不尽!!!

你这个邮箱有的吗,怎么显示被退回了,刚才发了,显示退回了,快回答怎么回事,要的快私聊我

E. 《UNIX网络编程卷1》txt下载在线阅读全文,求百度网盘云资源

《UNIX网络编程 卷1:套接字联网API(第3版)》(W.Richard Stevens)电子书网盘下载免费在线阅读

链接:

提取码: t24d

书名:UNIX网络编程 卷1:套接字联网API(第3版)

作者:W.Richard Stevens

译者:杨继张

豆瓣评分:9.3

出版社:人民邮电出版社

出版年份:2010-6

页数:804

内容简介:

这是一部传世之作!顶级网络编程专家Bill Fenner和Andrew M. Rudoff应邀执笔,对W. Richard Stevens的经典作品进行修订。书中吸纳了近几年网络技术的发展,增添了IPv6、SCTP协议和密钥管理套接字等内容,深入讨论了最新的关键标准、实现和技术。

书中的所有示例都是在UNIX系统上测试通过的真实的、可运行的代码,继承了Stevens一直强调的理念:“学习网络编程的最好方法就是下载这些程序,对其进行修改和改进。只有这样实际编写代码才能深入理解有关概念和方法。”读者可以从图灵网站(www.turingbook.com)本书网页免费注册下载这些示例的源代码。

本书为UNIX网络编程提供全面的指导,是网络研究和开发人员公认的权威参考书,无论网络编程的初学者还是网络专家都会大受裨益。

作者简介:

W. Richard Stevens(1951—1999) 国际知名的UNIX和网络专家,备受赞誉的技术作家。生前着有《TCP/IP详解》(三卷)、《UNIX环境高级编程》和《UNIX网络编程》(两卷),均为不朽的经典着作。

Bill Fenner AT&T实验室的主要技术人员,专攻IP多播、网络管理和测量,他是IETF路由的领域主管之一,负责审批作为RFC出版的所有路由相关文档。

Andrew M. Rudoff Sun公司的资深软件工程师,专攻网络、操作系统内核、文件系统和高可用性软件体系结构。

F. VC游戏编程与网络编程谁有前途

这两个前途是差不多的,你应该按你自己的兴趣学,还有技术有学精有学广,完全看你自己了。学精了你可以成为一个技术高手,但你也只是技术高手了。学广了你很好转其它的方面,或者项目经理或者构架师,毕竟现在软件工程师的生活不那么好过,当然如果你是一个性格比较内向,不太会说话,做事情比较胆小的人,你还是专心搞技术吧,这样可以无视自己的缺点。
你现在还是学生,所以最好还是打好基础,vc的基础要打好,网络和图形的基础也要打好。等你工作了,你自然会明白要学什么了。
还有,很赞同上面一位的话,现在的中国已经容纳不下一张平静的书桌了,有彷徨的时间,随便找一本书来看你都多懂很多东西了。相信我,你现在学什么都是有用的。
另外,看了下有些人的话,说什么什么好学,lz你知道价值规律吧。我告诉你。越好学的东西,会的人越多,你越不值钱。我这个意思也不是说一定要找最难学的,但是,一定不要找最简单的,除非你只是想了解下软件开发,以后做相关事情,不然你会泯然众人矣。

G. 使用C语言写一个关于SCTP通信协议的仿真程序

具体去我空间看

//*********************************************
//功能:LPC2103的UART0演示
//内容:上位机PC以9600的波特率向LPC2103发送一个字符
// LPC2103再返回该字符
#include<lpc2103.h>
#define Fosc 11059200 //晶振
#define Fcclk Fosc*5 //系统频率
#define Fpclk Fcclk/4 //PCLK
#define UART_bps 9600 //波特率
#define u8 unsigned char
//以下是函数声明
void uart_ini(void);
u8 get_char(void);
void put_char(u8);
void put_string(u8*);

int main()
{
u8 zifu;
uart_ini(); //UART初始化
put_string("Please input a char:"); //输出字符串
while(1)
{
zifu=get_char(); //接收一个字符
put_string("\nYou have sent:");
put_char(zifu); //发送该字符

}
}

//UART初始化
void uart_ini()
{
unsigned short Fdiv;
APBDIV=0; // Fpclk = Fcclk/4
PINSEL0=0x05; //选择P0.0和P0.1为TXD0和RXD0
U0LCR=0x80; //除数锁存访问位打开
Fdiv=(Fpclk/16)/UART_bps;//波特率bps=(Fpclk/16)/(U0DLM:U0DLL),计算(U0DLM:U0DLL)
U0DLM = Fdiv / 256; //U0DLM放除数高八位
U0DLL = Fdiv % 256; //U0DLL放除数低八位
U0LCR=0x03; //关闭除数锁存访问位(这时RBR,THR处于可寻址状态),并设定一个字符的位宽为8位
}

//接收一个字符
u8 get_char()
{
while((U0LSR&0x01)==0); //等待接收完成
return(U0RBR); //返回接收的字符
}

//发送一个字符
void put_char(u8 byte)
{
U0THR=byte; //发送一个字符
while((U0LSR&0x40)==0); //等待发送完毕
}

//发送字符串
void put_string(u8 *p)
{
for(;*p!='\0';p++) //如果不是结束符,就发送
put_char(*p);
}
//**********************************************************

H. 什么是网络协议请简要说明之。请写出五种常用的网络协议。

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。

划分

1、物理层:以太网、调制解调器、电力线通信(PLC)、SONET/SDH、G.709、光导纤维、同轴电缆、双绞线等。

2、数据链路层:Wi-Fi(IEEE 802.11)、WiMAX(IEEE 802.16)、ATM、DTM、令牌环、以太网、FDDI、帧中继、GPRS、EVDO、HSPA、HDLC、PPP、L2TP、PPTP、ISDN、STP、CSMA/CD等。

3、网络层协议:IP (IPv4、IPv6)、ICMP、ICMPv6、IGMP、IS-IS、IPsec、ARP、RARP、RIP等。

4、传输层协议:TCP、UDP、TLS、DCCP、SCTP、RSVP、OSPF等。

5、应用层协议:DHCP、DNS、FTP、Gopher、HTTP、IMAP4、IRC、NNTP、XMPP、POP3、SIP、SMTP、SNMP、SSH、TELNET、RPC、RTCP、RTP、RTSP、SDP、SOAP、GTP、STUN、NTP、SSDP、BGP 等。



(8)sctp编程扩展阅读

网络协议通常由语法,语义和定时关系3部分组成。网络传输协议或简称为传送协议(Communications Protocol),计算机通信的共同语言。最普及的计算机通信为网络通信,所以“传送协议”一般都指计算机通信的传送协议,如:TCP/IP、NetBEUI等。

然而,传送协议也存在于计算机的其他形式通信,例如:面向对象编程里面对象之间的通信;操作系统内不同程序之间的消息,都需要有一个传送协议,以确保传信双方能够沟通无间。

I. 如何用recvmsg和sendmsg来编写sctp的程序

I.
msghdr 与 cmsghdr

struct msghdr {

void * msg_name;

int msg_namelen;

struct iovec * msg_iov;

unsigned long msg_iovlen;

void * msg_control;

unsigned long msg_controllen;

unsigned msg_flags;

};

结构成员可以分为下面的四组:

1.
套接口地址成员 msg_name 与 msg_namelen ; msg_name
指向要发送或接收信息的套接口地址。 msg_namelen 指明了这个套接口地址的长度。
msg_name 在调用 recvmsg 时指向接收地址,在调用 sendmsg 时指向目的地址。

2.
I/O 向量引用 msg_iov 与 msg_iovlen 它是实际的数据缓冲区,这个
msg_iovlen 是 msg_iov 的个数,不是长度。 msg_iov 成员指向一个
struct iovec 数组。

3.
附属数据缓冲区成员 msg_control 与 msg_controllen ,msg_control 指向附属数据缓冲区,而
msg_controllen 指明了缓冲区大小。

4.
接收信息标记位 msg_flags

struct iovec

{

void *iov_base;

unsigned long iov_len;

};

有了这个 iovec ,就可以使用 readv 和 writev 函数在一次函数调用中读取或是写入多个缓冲区,显然比多次 read , write 更有效率。 readv 和 writev 的函数原型如下:

#include

ssize_t writev(int fildes, const struct iovec *iov, int iovcnt);

ssize_t readv(int fildes, const struct iovec *iov, int iovcnt);

struct cmsghdr {

unsigned long cmsg_len; int cmsg_level;

int cmsg_type;

};

· cmsg_len 附属数据的字节数,这包含结构头的尺寸,这个值是由 CMSG_LEN() 宏计算的;

· cmsg_level 表明了原始的协议级别 ( 例如, SOL_SOCKET) ;

· cmsg_type 表明了控制信息类型 ( 例如, SCM_RIGHTS ,附属数据对象是文件描述符; SCM_CREDENTIALS ,附属数据对象是一个包含证书信息的结构 )

msghdr 和 cmsghdr: Linux 系统为这些结构提供了一系列的宏来简化我们的工作,这些宏可以在不同的 UNIX 平台之间进行移植:

#include

struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *msgh);

输入参数:指向 struct msghdr 结构的指针; 返回指向附属数据缓冲区内的第一个附属对象的 struct cmsghdr 指针。如果不存在附属数据对象则返回的指针值为 NULL 。

struct cmsghdr *CMSG_NXTHDR(struct msghdr *msgh, struct cmsghdr *cmsg);

输入参数:指向 struct msghdr 结构的指针,指向当前 struct cmsghdr 的指针;

这个用于返回下一个附属数据对象的 struct cmsghdr 指针,如果没有下一个附属数据对象,这个宏就会返回 NULL

size_t CMSG_SPACE(size_t length);

输入参数:附属数据缓冲区中的对象大小; 计算 cmsghdr 头结构加上附属数据大小,并包括对其字段和可能的结尾填充字符,注意 CMSG_LEN() 值并不包括可能的结尾填充字符。 CMSG_SPACE() 宏对于确定所需的缓冲区尺寸是十分有用的。 注意如果在缓冲区中有多个附属数据,一定要同时添加多个 CMSG_SPACE() 宏调用来得到所需的总空间。

void *CMSG_DATA(struct cmsghdr *cmsg)

输入参数:指向 cmsghdr 结构的指针 ;

返回跟随在头部以及填充字节之后的附属数据的第一个字节 ( 如果存在 ) 的地址。

size_t CMSG_LEN(size_t length)

输入参数:附属数据缓冲区中的对象大小; 计算 cmsghdr
头结构加上附属数据大小,包括必要的对其字段,这个值用来设置 cmsghdr 对象的 cmsg_len 成员.

int sendmsg(int, const struct msghdr *msg, unsigned int
flags)

int recvmsg(int s, struct msghdr *msg, unsigned int flags)

s, 套接字通道,对于 sendmsg 是发送套接字,对于 recvmsg 则对应于接收套接字;
msg ,信息头结构指针;
flags , 可选的标记位, 这与 send 或是 sendto
函数调用的标记相同。
函数的返回值为实际发送 / 接收的字节数。否则返回 -1 表明发生了错误

sctp
从协议栈的角度看,于tcp,udp同等级别的层次上的。具有tcp和udp不同的优点。从传输的角度看,它可以象tcp那样点对点的那样传输,也可以像udp那样一对多那样传输,但这两种方式对于sctp来说都是建立连接的。下面就介绍这两种方式的编程方式:

UDP那样点对多点的方式(代码片段):

sctpSK = socket(AF_INET, SOCK_SEQPACKET, IPPROTO_SCTP);

error = sctp_bindx(sctpSK, (struct sockaddr *)&tempSockAddr,
1, SCTP_BINDX_ADD_ADDR);

listen(sctpSK, 1);

typedef union {

struct sctp_initmsg init;

struct sctp_sndrcvinfo sndrcvinfo;

} _sctp_cmsg_data_t;

// buffer and variables used to read data from recvmsg control
messags

char
incmsg[CMSG_SPACE(sizeof(_sctp_cmsg_data_t))];

// data
buffer

struct
iovec iov;

// the
main msghdr structure used to receive/send messages

struct
msghdr inmessage;

struct
sockaddr_in msg_name;

memset(&inmessage, 0, sizeof(inmessage));

iov.iov_base = malloc(SCTP_RX_BUFFER_SIZE);

if
(iov.iov_base == NULL)

{

exit(EXIT_FAILURE);

}

iov.iov_len = SCTP_RX_BUFFER_SIZE;

inmessage.msg_name = &msg_name;

inmessage.msg_namelen = sizeof(msg_name);

inmessage.msg_iov = &iov;

inmessage.msg_iovlen = 1; //
number of iovs in the inmessage

inmessage.msg_control = incmsg;

inmessage.msg_controllen =
sizeof(incmsg);

received = recvmsg(sctpSK, &inmessage, MSG_WAITALL);

解析这个收到到的inmessage相应的代码如下:

union sctp_notification {

struct
{

__u16
sn_type;

__u16 sn_flags;

__u32 sn_length;

}
sn_header;

struct
sctp_assoc_change sn_assoc_change;

struct
sctp_paddr_change sn_paddr_change;

struct
sctp_remote_error sn_remote_error;

struct
sctp_send_failed sn_send_failed;

struct
sctp_shutdown_event sn_shutdown_event;

struct
sctp_adaption_event sn_adaption_event;

struct
sctp_pdapi_event sn_pdapi_event;

};

J. 使用C语言写一个关于SCTP通信协议的仿真程序

1991年4月,芬兰人Linux Benedict Torvalds根据可以在低档机上使用的MINIX设计了一个系统核心Linux 0.01,但没有使用任何MINIX或UNIX的源代码。通过USENET(就是新闻组)宣布这是一个免费的系统,主要在x86电脑上使用,希望大家一起来将它完善,并将源代码放到了芬兰的FTP站点上代人免费下载。本来他想把这个系统称为freax,可是FTP的工作人员认为这是Linus的MINIX,就用Linux这个子目录来存放,于是它就成了“Linux”。这时的Linux只有核心程序,还不能称做是完整的系统,不过由于许多专业用户(主要是程序员)自愿地开发它的应用程序,并借助Internet拿出来让大家一起修改,所以它的周边的程序越来越多,Linux本身也逐渐发展壮大起来。 运行Linux需要的配置并不高,支持众多的PC周边设备,并且这样一个功能强大的软件完全免费,其源代码是完全公开的,任何人都能拿来使用。说到这里,各位可能怀疑这免费后面是不是隐藏着什么?作者会心甘情愿的把它拿出来而分文不取吗?其实,它代表着软件开发的另一种概念:那就是基于GNU的版权制度。 版权是为了保护作者应有利益而设立的制度,但时至今日它却对科技的发展造成了一定的阻碍。例如现在病毒的肆虐,就是因为Microsoft不肯将Windows的源代码公开。杀毒软件的厂商只好自己去钻研OLE结构。还有,Intel为了保住自己的霸主地位,建立了一个个不许其它厂商使用的硬件规范,造成众多开发者并不是为了提升技术而是为了兼容性而耗费资金和时间,这样就造成了科研发展的混乱和垄断。为了改变这种状况,Richard M. Stallman在1984年创立了以生产免费软件为目的的组织--Free Software Foundation(免费软件基金会,简称FSF)。他认为:各个软件公司为了自己的利益不公开源代码会阻碍人类文明的发展,一个真正好的软件是为了替人解决问题,应该散发给需要的人。他开发了一个叫做GNU的计划,第一套软件就是GNU Emacs(UNIX平台下强大的编辑器)。任何人都能免费拿到这个软件和它的源代码,于是许多人自发的修改这套软件,为它增加功能。为了明确GNU的规范,Stallman发表了GNU General Public License和GNU Library General Public License授权声明,根据这些声明,所有的GNU软件都可以被任何人下载、出售、复制和修改,但必须提供程序源代码或者让使用者知道从哪里获得源代码!但不论免费或者收费,任何得到这些软件的使用者都有和提供者同样的权利,可以将它们赠送或出售。由于这个授权,GNU软件像滚雪球一样越来越多,功能也越来越强。当然,这样做也有不良的效果,如果开发商的利润减少了那么就没有人愿意真正开发软件了,毕竟人还是要吃饭的呀。不过随着Internet的盛行,众越来越容易得到各种各样的软件,而且大多只为一时之需,用完之后根本不会再用,一个软件的使用寿命就大大缩短,在这种情况下,传统的电子出版行业应该做出相应的调整。 Linux核心程序的着作权归Linus本人所有,其它应用程序归各自的作者所有,但按照GNU授权,任何人都可以采取收费或免费方式来发行Linux,并在符合该授权的规范下做修改。这样就有了一大批的免费程序移植到了Linux上,包括GNU Emacs、XFree86、Mozilla等经典软件,并且在不断壮大中。由于源代码是公开的,任何一个使用Linux的人在添置了新硬件后都能自己编写驱动程序,所以Linux对新硬件的支持己经超过了许多专业UNIX系统。Linux的成功如果没有Internet是不可能的,因为Linux实际上是世界各地众多程序员共同开发的结果。 现在的Linux经过数次改版(包括核心的升级和周边程序的完善),己经发展成了一个遵循POSIX标准的纯32位多工操作系统,64位版本也在开发之中。Linux可以兼容大部分的UNIX系统,很多UNIX的程序不需要改动,或者很少的改变就可以运行于Linux环境;内置TCP/IP协议,可以直接连入Internet,作为服务器或者终端使用;内置JAVA解释器,可直接运行JAVA源代码;具备程序语言开发、文字编辑和排版、数据库处理等

热点内容
办公oa系统源码 发布:2025-01-18 21:19:51 浏览:223
beatsflex如何连接安卓手机 发布:2025-01-18 21:19:07 浏览:359
天翼光猫如何配置单线复用 发布:2025-01-18 21:19:06 浏览:835
ftp制作网站 发布:2025-01-18 21:18:12 浏览:338
android使用at命令 发布:2025-01-18 20:54:51 浏览:216
phptiny 发布:2025-01-18 20:54:03 浏览:987
怎么给汉字加密 发布:2025-01-18 20:49:44 浏览:865
遍历javamap 发布:2025-01-18 20:39:05 浏览:624
我的世界租服务器哪里最便宜 发布:2025-01-18 20:38:50 浏览:564
dhcp服务器地址租期时间怎么调整 发布:2025-01-18 20:28:02 浏览:267