您的位置:首页 > 理论基础 > 计算机网络

Linux网络应用程序设计

2016-12-09 16:35 183 查看

Linux网络概述

Linux为用户提供了完善的、强大的网络功能。

1.完善的内置网络。其他操作系统不包含如此紧密地和内核结合在一起的网络部分。

2.Linux免费的提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux时相当      方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。

3.用户能通过一些Linux命令完成内部信息或文件的传输。

4.远程访问。Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效的为多个系统服务,即使那些系统位于相距很远的地方。

5.安全可靠。Linux采取了很多安全可靠的措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。































Linux网络编程基础

Socket:Linux中的网络编程通过Socket(套接字)实现,Socket是一种文件描述符。

类型
socket有三种类型:
(1)流式套接字(SOCK_STREAM),流式套接字提供可靠的、面向连接的通讯流,它使用TCP协议。TCP保 证了数据传输的正确性和顺序性。
(2)数据报套接字(SOCK_DGRAM),数据包套接字定义了一种无连接的服务,数据通过相互独立的报文进 行传输,是无序的,并且不保证了,无差错,它使用数据报协议UDP。
(3)原始套接字(SOCK_RAW),原始套接字允许使用IP协议,主要用于新的网络协议测试等。 

网络地址
在socket程序设计中struct socketaddr用于记录网络地址:
struct socketaddr
{
u_short sa_family;
char sa_data[14];
}
sa_family:协议族,采用“AF_xxx”的形式,如:AF_INET(IP协议族)
sa_data:14字节的特定协议地址。

地址结构
在socket程序设计中,struct sockaddr_in同样用于记录网络地址
struct sockaddr_in
{
short int sin_family;/*协议族*/
unsigned short int sin_port;/*端口号*/
struct in_addr sin_addr;/*协议特定地址*/
unsigned char sin_zero[8];/*填0*/
}
编程中一般使用与sockaddr等价的sockaddr_in数据结构。

















TCP网络程序设计

基于TCP-服务器
(1)创建一个socket,用函数socket()
(2)绑定IP地址、端口等信息到socket上,用函数bind()
(3)设置允许的最大连接数,用函数listen()
(4)等待来自客户端的连接请求,用函数accept()
(5)收发数据,用函数send()和recv(),或者read()和write()
(6)关闭网络连接

基于TCP-客户端
(1)创建一个socket,用函数socket()
(2)设置要连接的服务器的IP地址和端口等属性
(3)连接服务器,用函数connect()
(4)收发数据,用函数send()和recv(),或者read()和write()
(5)关闭网络连接













UDP网络程序设计

基于UDP-服务器
(1)创建一个socket,用函数socket()
(2)绑定IP地址、端口等信息到socket上,用函数bind()
(3)循环接收数据,用函数recvfrom()
(4)关闭网络连接

基于UDP-客户端
(1)创建一个socket,用函数socket()
(2)绑定IP地址、端口等信息到socket上,用函数bind()
(3)设置对方的IP地址和端口等属性
(4)发送数据,用函数sendto()
(5)关闭网络连接











并发服务器

服务器模型:
在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。目前最常用的服务器的模型有:(1)循环服务器,服务器在同一个时刻只能响应一个客户端的请求;(2)并发服务器,服务器在同一个时刻可以响应多个客户端的请求。











内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐