Linux网络应用程序设计
来源:互联网 发布:linux dump命令 编辑:程序博客网 时间:2024/05/16 04:38
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)并发服务器,服务器在同一个时刻可以响应多个客户端的请求。
0 0
- LINUX 网络应用程序设计
- linux网络应用程序设计
- Linux网络应用程序设计
- Linux应用程序设计之网络基础编程
- 网络应用程序设计
- 网络应用程序设计模式
- 【原创】《Linux高级程序设计》杨宗德著 - UDP网络编程应用
- linux应用程序设计基础--多线程程序设计
- Linux程序设计入门--网络编程
- Linux程序设计入门--网络编程
- Linux程序设计入门--网络编程
- Linux程序设计入门--网络编程
- Linux程序设计学习笔记----网络通信编程API及其示例应用
- Linux 程序设计(应用篇)
- Sun ONE杯网络应用程序设计大赛
- linux教程-网络应用
- Linux网络应用问答
- Linux 网络应用大全
- 初识IDA工具
- 理解使用Gradle编译打包Android apk
- 免费微信公众号专用h5在线电影票API
- 网络知识整理
- 代码整洁之道内容概括
- Linux网络应用程序设计
- 顺序查找(LinearSearch)的总结
- Java小白的一些收获
- Restify —— 在Node.js中构建正确的REST Web服务
- iOS中.h或.m文件名后会有M,A,?
- SeaweedFS
- android 滑动拦截
- qt 在ubuntu下的下载安装及测试
- c#隐藏和重写基类方法的区别