1 基于 TCP 的双客户信息传输程序陈嘉明 2012021750 物理与电信工程学院电子与通信工程摘要: 本文介绍了基于 TCP/IP 协议的客户端和服务器通信的基础上,在 Linux 的环境对套接口进行编程,实现了双客户间的通信,服务器对客户间的信息进行加密和监控,客户程序则对信息进行解密读取。关键词: 双客户通信; Linux ; TCP/IP 协议; Socket 套接口; I/O 复用; select 函数; 1 .前言大多数的网络应用系统可以分为两部分:客户( client )和服务器( server ),它们通过 TCP/IP 协议进行信息的传输。通过套接口编写使用 TCP 或 UDP 的网络应用程序便可以实现不同的功能。在简单的回射服务程序中,通过捕获信号 SIGCHLD 来处理僵尸进程;但由于客户阻塞于等待用户输入,当服务进程被终止时,客户并不能立即收到信息。通过基于 select 函数及 poll 函数的 I/O 复用技术,我们可以做到:当条件满足(如输入设备已被读、描述字可以承受更多的输出),就能被通知并采取行到,而不是被动等待。如此,程序不但简洁、时效性高,而且充分利用了资源。基于以上的技术,编写出了双客户通信程序,功能有三:一客户能发送信息,接收并解密信息;二服务器能将客户信息加密后再传输;三服务器对客户通信进行监听,包括时间、套接字、通信内容。 2 .套接口函数一个完整的 TCP 客户及服务器程序是需要一系列基本套接口函数来支持的,下面可以看到这些函数相互配合,搭建了网络通信程序的各个环节。 TCP 的连接 TCP 通过三路握手来达到连接,下面是它们的步骤: A 服务器必须准备好接受外来的连接,可以通过调用 socket 、 bind 和 listen 等函数完成, 称为被动打开; B客户通过调用 connect 进行主动打开。这引起客户 TCP 发送一个 SYN 分节(表示同步), 它告诉服务器客户在连接中发送的数据的初始序列号。一般情况下 SYN 分节不携带数据,它只含一个 IP头部、一个 TCP 头部及可能有的 TCP 选项。 C 服务必须确认客户的 SYN ,同时自己也得发送一个 SYN 分节,它含有服务器将在同一连接中发送数据的初始序列号。服务器以单个分节向客户发送 SYN 核对客户 SYN 的 ACK 。 D客户必须确认服务器的 SYN 。 2 图 1三路握手建立 TCP 同步连接 基本套接口函数图 2基本 TCP 客户-服务器程序的套接口函数 A socket 函数#include<sys/> Int socket(int family,int type,int protocol); 返回:非负描述字---- 成功, -1----- 出错为了执行网络输入输出,一个进程必须做的第一件事情就是调用 socket 函数,指定期望的通信协议类型(使用 IPv4 的 TCP 、使用 IPv6 的 UDP 、 Unix 域字节流协议等)。代码 3 中的 family 指明协议族,它是图 2中所示的某个常值。套接口的类型 type 是图 3中所示的某个常值。一般来说,函数 socket 的参数 protocol 设置为 0。 B connect 函数 TCP 客户用 connect 函数来建
基于TCP的双客户信息传输程序--陈嘉明-- 来自淘豆网m.daumloan.com转载请标明出处.