第一章 理解网络编程和套接字

来源:互联网 发布:2017最新网络灰色项目 编辑:程序博客网 时间:2024/05/20 23:37

《TCP/IP网络编程》 尹圣雨

P2~ P15

网络编程就是编写程序使两台联网的计算机相互交换数据。如何编写数据传输软件?操作系统会提供名为“套接字”的部件。

“套接字”socket:网络数据传输用的软件设备。

套接字本身带有“连接”的含义,如果将其引申,则还可以表示两台计算机之间的网络连接。


网络编程值接受请求的套接字创建过程:

调用socket函数(安装电话机)创建套接字;

调用bind函数(分配电话号码)分配IP地址和端口号;

调用listen函数(连接电话线)转为可接收请求状态;

调用accept函数(拿起话筒)受理连接请求;


服务器端创建的套接字被称为服务器服务器端套接字或监听listening套接字。

客户端程序只有“调用socket函数创建套接字”和"调用connect函数向服务器端发送连接请求“两个步骤。



对于Linux而言,socket被认为是文件的一种,因为在网络的数据传输过程中可以使用文件I/O的相关函数。windows需要区分socket和文件,因此在windows中需要调用特殊的数据传输相关函数。

底层文件服务 Low-Level File Access 和 文件描述符File Descriptor.()文件描述符也叫文件句柄,句柄是windows值利用的。

"底层"与标准无关的操作系统独立提供的,文件描述符是系统分配给文件或套接字的整数。文件和套接字一般经过创建才会被分配文件描述符。


打开文件 int open (const char *path,int flag);//成功时返回文件描述符,失败返回-1

path:文件名的字符串地址;flag:文件打开模式信息

打开模式

O_CREATEO_TRUNC O_APPENDO_RDONLY O_WRONLYO_RDWR

删除全部现有数据维持现有数据


关闭文件 int close(int fd);///成功时返回0,失败时返回-1

fd:需要关闭的文件或套接字的文件描述符

注意:此函数可以关闭文件,也可以关闭套接字。


将数据写入文件: ssize_t  write(int fd,const void *buf,size_t nbytes);//成功时返回写入的字节数,失败返回-1

fd:显示数据传输对象的文件描述符;buf:保存要传输数据的缓冲地址值; nbytes:要传输数据的字节数;

注意:ssize_t代表singned intsize_t代表unsigned int


读取文件中的数据: ssize_t read(int fd, void *buf, size_t nbytes);//成功时返回接收的字节数(遇到文件结尾则返回0),失败返回-1

fd:显示数据接收对象的文件描述符;buf:保存要接收数据的缓冲地址值;nbytes:要接收数据的最大字节数;











原创粉丝点击