Linux下的TCP/IP编程
讲解Linux下的TCP/IP编程的基本概念,TCP服务端/客户端,UDP服务端/客户端,多进程服务端和IO复用的一些内容
兜里有糖心里不慌
前路漫漫,但心之所向。
展开
-
Linux下的TCP/IP编程----线程及多线程服务端
之前有讲过进程及多进程服务端的实现,现在我们来看看更为广泛而且实用的线程及多线程服务端的实现。那么什么是线程呢? 线程是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是行程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并行多个线程,每条线程并行执行不同的任务。这是比较正式的解释,简单点来说,线程就是进程的更进一步的细化。由于进程代表的原创 2016-06-29 20:27:47 · 4285 阅读 · 3 评论 -
Linux下的TCP/IP编程----多播和广播的实现
在前边我们实现的都是服务端客户端这样点对点的通讯,数据只是从一个点到另一个点,但是当我们需要将一份数据同时发给指定的多个人时就遇到了问题,总不能建立多个TCP的长连接或者是多个UDP数据报吧。这时我们就应该考虑使用多播或者时广播来实现我们的需要。多播: IP多播(也称多址广播或 组播)技术,是一种允许一台或多台主机(多播源)发送单一 数据包到多台主机(一次的,同时的)的TCP/ IP网络技术。多原创 2016-06-05 13:54:10 · 6238 阅读 · 0 评论 -
Linux下的TCP/IP编程----IO复用及IO复用服务端
在之前我们实现的并发服务端时通过床将多个进程来实现的,这种并实现并发的方式简单方便,但是进程的创建和销毁是很消耗系统资源的,在访问量大时服务器很容易出现资源不够用的情况。除此之外,由于每个进程有独立的内存空间,所以进程间的通讯也相对比较复杂。因此我们可以考虑通过另一种方式来实现服务端的并发服务——IO复用。复用:复用在通讯领域很常见,一般常见”频分复用”,”时分复用”等名词。其实复用就是在一个通信频原创 2016-06-04 19:07:49 · 4429 阅读 · 0 评论 -
Linux下的TCP/IP编程----进程间通讯
之前我们简单的使用多进程的方式实现了服务端的并发服务,但是这两个进程之间并不能相互通讯进行数据的交换,在本节我们简单了解一下Linux下的进程间通讯的一种方式——管道通讯。管道通讯可以视作两个进程之间有一个管道相连接,通过这个管道来进行进程间的数据交换。首先创建管道,然后要传输数据的一方向管道中写入要传输的数据,然后接收方从管道中将数据取走,主样以来就完成了两个进程间的通讯。int pipe(int原创 2016-06-04 12:27:01 · 1442 阅读 · 0 评论 -
Linux下的TCP/IP编程----进程及多进程服务端
在之前的学习中我们的服务端同一时间只能为一个客户端提供服务,即使是将accept()函数包含在循环中,也只能是为多个客户端依次提供服务,并没有并发服务的能力,这显然是不合理的。通过多进程的使用,我们可以很便捷的实现服务端的多进程,这样就可以同时为多个客户端提供服务。首先我们要理解程序,进程,进程ID,僵尸进程,线程的概念。程序:广泛的说就是为了达到某一目的二规定的途径,在编程中具体的就原创 2016-06-01 21:03:42 · 5189 阅读 · 5 评论 -
Linux下的TCP/IP编程----socket的可选项
在之前我们都是直接通过socket()函数创建一个socket文件描述符直接使用,其实这只是系统为我们提供的一个默认的socket描述符,我们可以根据自己的工程的需求来对socket进行相应的配置,以提高程序的效率原创 2016-05-31 16:25:15 · 2185 阅读 · 4 评论 -
Linux下的TCP/IP编程------基于TCP的半关闭
在TCP服务端和客户端建立连接之后服务端和客户端会分别有两个独立的输入流和输出流,而且相互对应。服务端的输出流对应于客户端的输入流,服务端的输入流对应于客户端的输出流在Linux下的close()函数都是直接把该原创 2016-05-31 11:27:03 · 2309 阅读 · 0 评论 -
Linux下的TCP/IP编程----UDP实践篇
大部分的准备工作的代码都合之前TCP时候的一样,我们只需要在关键部分进行一下修改即可。首先是服务端的程序: 创建套接字—-绑定地址—-进行通讯#include <stdio.h>#include <stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#defin原创 2016-05-28 19:00:36 · 1005 阅读 · 0 评论 -
Linux下的TCP/IP编程----UDP篇
之前讲述的都是基于TCP协议的连接和通讯方式,即面向连接的socket方式,接下来我们在考虑一下基于消息的socket是怎样工作的,也就是UDP协议。首先UDP协议和TCP协议最大的区别就在于是否会始终保持通讯通道的连接。UDP协议(用户数据报协议)不需要在通讯时始终保持连接,一个最形像的例子便是把UDP协议看作是邮局系统,要发送消息的人只需要把需要发送的消息写好地址,贴上邮票投放到邮箱中即可,之后原创 2016-05-28 16:56:39 · 920 阅读 · 0 评论 -
Linux下的TCP/IP编程----实践篇
在了解了socket编程的基础知识之后就可以开始尝试编写一个简单的TCP/IP的服务端/客户端程序了。首先来梳理一下卡客户端和服务端的操作流程:服务端: 需要一张流程图#include #include #include#include#include#include//函数声明void error_handling(char *message);int原创 2016-05-27 19:01:46 · 1295 阅读 · 0 评论 -
Linux下的TCP/IP编程----基础篇
Socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务原创 2016-05-26 21:34:00 · 3716 阅读 · 0 评论