TCP/IP编程 - 1) 基础知识

1. What Is a Socket?(什么是套接字)

 

A socket is an abstraction through which an application may send and receive data, in much
the same way as an open-file handle allows an application to read and write data to stable
storage.

 

简单来说,套接字就是网络数据传输用的软件设备。

 

举个生活中的例子:

我们把插头插到插座上就能从电网获得电力供应,同样道理,为了与远程计算机

进行数据通信,需要连接到Internet,而套接字就是用来连接网络的工具。

 

A socket allows an application to plug in to the network and communicate with other
applications that are plugged in to the same network. Information written to the socket by
an application on one machine can be read by an application on a different machine and vice
versa.

 

TCPIP套接字网络原理图:

 

2. 套接字网络编程的步骤

 

a. 服务端

step1: 调用socket函数创建套接字

step2: 调用bind函数分配IP地址和端口号

step3: 调用listen函数转为可接收请求状态

step4: 调用accept函数受理连接请求

 

b. 客户端

step1: 调用socket函数创建套接字

step2: 调用connect函数向服务端发送连接请求

 

3. 各函数介绍

 

1) socket()函数

#include <sys/types.h>
#include <sys/socket.h>
int socket(int domain, int type, int protocol);

这个函数建立一个协议族为domain,协议类型为type,协议编号为protocol的

套接字文件描述符。

domain: 协议族, 通常为AF_NET(TCPIP协议族), 以太网使用PF_INET

type: 通信类型

    SOCK_STREAM(流式套接字)

    SOCK_DGRAM(数据包套接字)

protocol: 协议的特定类型,通常为0

 

2) bind()函数

#include <sys/types.h>
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen);

这个函数将长度为addrlen的sockaddr结构类型参数my_addr和sockfd绑定在一起

 

3. listen()函数

这个函数用来监听端口

#include <sys/socket.h>
int listen(int sockfd, int backlog);

 

4. accept()函数

#include <sys/types.h>
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);

通过accept()函数可以得到成功连接客户端的IP地址,端口和协议族等信息,这个信息是通过

参数addr获得的。

 

5. connect()函数 - 客户端

#include <sys/types.h>
#include <sys/socket.h>
int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

这个函数用来连接网络目标服务器。
其中,参数ser_addr结构包含了需要连接的目的服务器的端口和IP地址,以及协议类型。

 

时间: 2024-10-26 07:31:52

TCP/IP编程 - 1) 基础知识的相关文章

TCP/IP编程实现远程文件传输

 在TCP/IP网络结构中,为了保证网络安全,网络人员往往需要在路由器上添加防火墙,禁止非法用户用ftp等安全危害较大的TCP/IP协议访问主机.而有时系统维护人员需要用ftp将一些文件从中心机房主机传到前端网点主机上,比如应用程序的替换升级.如果每次传输文件时都要打开防火墙,未免显得有些繁琐,要是在自己的应用程序中增加一个专门的文件传输模块,那将是十分愉快的事情.    UNIX网络程序设计一般都采用套接字(socket)系统调用.针对目前十分流行的客户/服务器模式,其程序编写步骤如下:  1

网络及TCP/IP简明快速基础

网络基础知识,除了网络管理人员必须掌握之外,对于系统运维人员,数据库管理员以及程序员等多了解和掌握是有百利而无一害.本文简明扼要介绍了网络常见的名词及术语以及TCP/IP模型,并列出了几个网络相关的常见问题,旨在快速了解或者用于归纳型回顾这些知识.供大家参考. 一.常规名词术语 MAC地址:   媒体访问控制,或称为物理地址.硬件地址,用来定义网络设备的位置.在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址.因此一个主机会有一个MAC地址,而每个网络位置会有一个专属

Lua中函数与面向对象编程的基础知识整理_Lua

函数 1. 基础知识调用函数都需要写圆括号,即使没有参数,但有一种特殊例外:函数若只有一个参数且参数是字面字符串或table构造式,则圆括号可有可无,如dofile 'a.lua',f{x=10, y=20}. Lua为面向对象式的调用提供冒号操作符的特殊语法,如o.foo(o, x)等价于o:foo(x).和Javascript类似,调用函数时提供的实参数量可以与形参数量不同,若实参多了则舍弃,不足则多余的形参初始化为nil. 1.1 多重返回值 Lua允许函数返回多个结果,函数返回如retu

ADO.NET编程之基础知识_实用技巧

一.ADO.NET基础 程序和数据库交互,要通过ADO.NET进行:通过ADO.NET就能在数据库中执行SQL了.ADO.NET中提供了对不同数据库的统一操作接口(ODBC).另外还有一种操作数据库的接口是JDBC. ADO.NET中通过SqlConnection类创建到SQL Server的链接,Sqlconnection代表一个数据库的链接,ADO.NET中的链接等资源都实现了IDisposable接口. 实现了IDisposable接口的对象,在使用完了,要进行资源的释放.调用Dispos

ASP.NET中Cookie编程的基础知识(3)

asp.net|cookie|编程 查看您的 Cookie 您可能会发现,了解创建 Cookie 的效果会对您很有帮助.而查看 Cookie 是比较容易的,因为它们都是文本文件,关键在于您能找到它们.不同的浏览器保存 Cookie 的方式也不同.我将介绍 Internet Explorer 是如何保存 Cookie 的.如果您使用的是其他浏览器,请查看该浏览器的帮助,以了解有关 Cookie 处理方面的知识. 查看 Cookie 的一个简便方法是让 Internet Explorer 为您查找.

Java GUI图形化用户界面编程的基础知识

java的GUI编程(Graphic User Interface,图形用户接口),是在它的抽象窗口工具箱(Abstract Window Toolkit,AWT)上实现的,java.awt是AWT的工具类库,其中包括了丰富的图形.用户界面元件和布局管理器的支持. GUI主要用在两个地方: Application: Applet. 1)GUI界面: 用户与程序之间交互的一个控制面板,其内包含有菜单,控件(或组件),容器并能响应用户的事件. 现在有各种各样的窗口系统,不同的窗口系统提供给程序设计的

详解JavaScript的策略模式编程_基础知识

 我喜欢策略设计模式.我尽可能多的试着去使用它.究其本质,策略模式使用委托去解耦使用它们的算法类. 这样做有几个好处.他可以防止使用大条件语句来决定哪些算法用于特定类型的对象.将关注点分离开来,因此降低了客户端的复杂度,同时还可以促进子类化的组成.它提高了模块化和可测性.每一个算法都可以单独测试.每一个客户端都可以模拟算法.任意的客户端都能使用任何算法.他们可以互调.就像乐高积木一样. 为了实现策略模式,通常有两个参与者: 该策略的对象,封装了算法. 客户端(上下文)对象,以即插即用的方式能使用

ASP.NET中Cookie编程的基础知识(1)

asp.net|cookie|编程 简介 Cookie 为 Web 应用程序保存用户相关信息提供了一种有用的方法.例如,当用户访问您的站点时,您可以利用 Cookie 保存用户首选项或其他信息,这样,当用户下次再访问您的站点时,应用程序就可以检索以前保存的信息. 本文概要介绍 Cookie 在 ASP.NET 应用程序中的应用,为您展示在 ASP.NET 中应用 Cookie 的技术细节,例如编写 Cookie.然后再读取它们.同时,还将为您介绍 Cookie 的各种特性和各种特殊情况,以及 A

ASP.NET中Cookie编程的基础知识(2)

asp.net|cookie|编程 2Cookie 的限制 在开始讨论 Cookie 的技术细节之前,我想先介绍一下 Cookie 应用的几条限制.大多数浏览器支持最多可达 4096 字节的 Cookie,如果要将为数不多的几个值保存到用户计算机上,这一空间已经足够大,但您不能用一个 Cookie 来保存数据集或其他大量数据.在实际应用中,您可能并不希望在 Cookie 中保存大量的用户信息,而只希望保存用户编号或其他标识符.之后,当用户再次访问您的站点时,您就可以使用该用户 ID 在数据库中查