当前位置 —论文写论文— 范文

计算机网络类论文范文参考文献,与计算机组成原理教学大纲相关毕业论文模板

本论文是一篇计算机网络类毕业论文模板,关于计算机组成原理教学大纲相关开题报告范文。免费优秀的关于计算机网络及操作系统及参考文献方面论文范文资料,适合计算机网络论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。

d函数来为其Socket绑定IP地址和断口号.该函数的第一个参数指定待绑定的Socket描述符,第二个参数指定一个sockaddr结构,该结构是这样定义的:

structsockaddr{

u_shortsa_family,

charsa_data[14],

},

sa_family指定地址族,对于TCP/IP协议族的套接字,给其置AF_INET.当对TCP/IP协议族的套接字进行绑定时,我们通常使用另一个地址结构:

structsockaddr_in{

shortsin_family,

u_shortsin_port,

structin_addrsin_addr,charsin_zero[8],

},

其中sin_family置AF_INET,sin_port指明端口号,sin_addr结构体中只有一个唯一的字段s_addr,表示IP地址,该字段是一个整数,一般用函数i_addr()把字符串形式的IP地址转换成unsignedlong型的整数值后再置给s_addr.有的服务器是多宿主机,至少有两个网卡,那么运行在这样的服务器上的服务程序在为其Socket绑定IP地址时可以把htonl(INADDR_ANY)置给s_addr,这样做的好处是不论哪个网段上的客户程序都能与该服务程序通信,如果只给运行在多宿主机上的服务程序的Socket绑定一个固定的IP地址,那么就只有与该IP地址处于同一个网段上的客户程序才能与该服务程序通信.我们用0来填充sin_zero数组,目的是让sockaddr_in结构的大小与sockaddr结构的大小一致.下面是一个bind函数调用的例子:

structsockaddr_insaddr,

saddr.sin_family等于AF_INET,

saddr.sin_port等于htons(8888),

saddr.sin_addr.s_addr等于htonl(INADDR_ANY),

bind(ListenSocket,(structsockaddr*)&,saddr,sizeof(saddr)), listen函数

intlisten(SOCKETs,intbacklog),

服务程序可以调用listen函数使其流套接字s处于监听状态.处于监听状态的流套接字s将维护一个客户连接请求队列,该队列最多容纳backlog个客户连接请求.假如该函数执行成功,则返回0,如果执行失败,则返回SOCKET_ERROR.

accept函数

SOCKETaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen),

服务程序调用accept函数从处于监听状态的流套接字s的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字来与客户套接字创建连接通道,如果连接成功,就返回新创建的套接字的描述符,以后与客户套接字交换数据的是新创建的套接字,如果失败就返回INVALID_SOCKET.该函数的第一个参数指定处于监听状态的流套接字,操作系统利用第二个参数来返回新创建的套接字的地址结构,操作系统利用第三个参数来返回新创建的套接字的地址结构的长度.下面是一个调用accept的例子:

structsockaddr_inServerSocketAddr,

intaddrlen,

addrlen等于sizeof(ServerSocketAddr),

ServerSocket等于accept(ListenSocket,(structsockaddr*)&,ServerSocketAddr,&,addrlen),

connect函数

intconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen),

客户程序调用connect函数来使客户Sockets与监听于name所指定的计算机的特定端口上的服务Socket进行连接.如果连接成功,connect返回0,如果失败则返回SOCKET_ERROR.下面是一个例子:

structsockaddr_indaddr,

memset((void*)&,daddr,0,sizeof(daddr)),

daddr.sin_family等于AF_INET,

daddr.sin_port等于htons(8888),

daddr.sin_addr.s_addr等于i_addr("133.197.22.4"),

connect(ClientSocket,(structsockaddr*)&,daddr,sizeof(daddr)),WindowsSockets是一个编程接口,它是在加州大学伯克利分校开发的套接字接口的基础上定义的.它包括了一组扩展件,以充分利用MicrosoftWindows消息驱动的特点.规范的1.1版是在1993年1月发行的,2.2.0版在1996年5月发行.Windows2000支持Winsock2.2版.在Winsock2中,支持多个传输协议的原始套接字,重叠I/O模型,服务质量控制等.

这里介绍WindowsSockets的一些关于原始套接字(RawSocket)的编程.同Winsock1相比,最明显的就是支持了RawSocket套接字类型,通过原始套接字,我们可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制.

(1)创建一个原始套接字,并设置IP头选项.

SOCKETsock,

sock等于socket(AF_INET,SOCK_RAW,IPPROTO_IP),

或者:

s等于WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED),

这里,我们设置了SOCK_RAW标志,表示我们声明的是一个原始套接字类型.创建原始套接字后,IP头就会包含在接收的数据中,如果我们设定IP_HDRINCL选项,那么,就需要自己来构造IP头.

注意,如果设置IP_HDRINCL选项,那么必须具有administrator权限,要不就必须修改注册表:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Afd\Parameter\

修改键:DisableRawSecurity(类型为DWORD),把值修改为1.如果没有,就添加.

BOOLblnFlag等于TRUE,

setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&,blnFlag,sizeof(blnFlag),

对于原始套接字在接收数据报的时候,要注意这么几点:

如果接收的数据报中协议类型和定义的原始套接字匹配,那么,接收的所有数据就拷贝到套接字中.

如果绑定了本地地址,那么只有接收数据IP头中对应的远端地址匹配,接收的数据就拷贝到套接字中.

如果定义的是外部地址,比如使用connect(),那么,只有接收数据IP头中对应的源地址匹配,接收的数据就拷贝到套接字中.

(2)构造IP头和TCP头

这里,提供IP头和TCP头的结构: //StandardTCPflags #defineURG0x20 #defineACK0x10 #definePSH0x08 #defineRST0x04 #defineSYN0x02 #defineFIN0x01 typedefstruct_iphdr//定义IP首部 { unsignedcharh_lenver,//4位首部长度+4位IP版本号 unsignedchartos,//8位服务类型TOS unsignedshorttotal_len,//16位总长度(字节) unsignedshortident,//16位标识 unsignedshortfrag_and_flags,//3位标志位 unsignedcharttl,//8位生存时间TTL unsignedcharproto,//8位协议(TCP,UDP或其他) unsignedshortchecksum,//16位IP首部校验和 unsignedintsourceIP,//32位源IP地址 unsignedintdestIP,//32位目的IP地址 }IP_HEADER, typedefstructpsd_hdr//定义TCP伪首部 { unsignedlongsaddr,//源地址 unsignedlongdaddr,//目的地址 charmbz, charptcl,//协议类型 unsignedshorttcpl,//TCP长度 }PSD_HEADER, typedefstruct_tcphdr//定义TCP

1 2 3 4 5

计算机网络类论文范文参考文献,与计算机组成原理教学大纲相关毕业论文模板参考文献资料:

如何写博士论文

如何撰写博士论文

写景高考满分作文

论文写什么

如何写好sci论文

博士

如何写数学建模论文

如何写高中生物论文

议论文怎么写好

博士论文 写

计算机组成原理教学大纲(4)WORD版本 下载地址