基于socket的网络即时聊天系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程题目:基于Socket的即时通讯系统

1.设计目的:通过综合课程设计,使学生能够运用《数字信号处理》、《信号与系统》、《通信原理》、《面向对象的程序设计》、《计算机通信网》、《通信协议开发及应用》等课程的知识来设计一个基于Socket 的即时通讯系统,培养学生的动手能力以及分析问题、解决问题的能力。

2.设计内容:

基于Socket和多线程编程的聊天程序实现

3.设计要求:

(一)基本要求

1.熟练掌握面向对象的程序设计方法;

2.实现点对点通讯,能进行文字对话传输,包括客户端与服务器端;

3.能对系统参数进行配置。

(二)提高要求

1、实现文件、图片传输;

2、语音对话(两人及两人以上);

3、友好的对话界面。

4.设计原理:

1 TCP/IP简介

TCP/IP的历史要追溯到70年代中期,当时ARPA为了实现异种网之间的互连(interconnection)与互通(intercommunication),大力资助网间网技术的研

究和开发,于1977年到1979年推出目前形式的TCP/IP体系结构和协议规范.到今天,TCP/IP技术以及Internet网间网已经为广大计算机工作者,机算机厂商和机算机用户所接受.据统计,到1990年,Internet以包含遍布欧美的五千个活动网络,超过三十万台机算机.作为一种事实上的工标准,TCP/IP技术方兴未艾.

2 TCP/IP的网络分层结构

对TCP/IP协议来说,TCP提供传输层服务,IP提供网络层服务.TCP/IP协议组(或Internet协议组)的分层结构及其与OSI模型的对应关系如图4所示.图中有关协议的名称及其基本含义如下:

(1) TCP. 为传输控制协议(Transmission Control Protocol).它是提供给用户进程的一个可靠的全双工字节流的面向连接的协议.大多数Internet应

用程序使用TCP.因为TCP使用IP,所以整个Internet协议组也常称为TCP/IP

协议组.

(2) UDP. 为用户数据报协议 (User Datagram Protocol).

(3) ICMP. 为网间报文控制协议 (Internet Control Message Protocol).

(4) IP. 网间协议 (Internet Protocol). IP协议是为TCP,UDP和ICMP 提供分组发送服务协议.

(5) ARP. 地址转换协议.

(6) RARP. 反向地址转换协议.

3 Socket编程界面

(1) Socket 原理

Socket编程界面由4BSD UNIX首先提出,目的是解决网间网进程通信问题.Socket接口为进程间通信提供了一种新的手段,它不但能用于同一机器中的进程之间的通信,而且支持网络通信功能.Socket具有类型,反应了对用户透明

的通信特性.

一个完整的Socket连接用一个相关描述:

{ 协议,本地地址,本地端口,远地地址,远地端口 }

Socket 是面向客户-服务器模型而设计的,针对客户和服务器程序提供不同的Socket系统调用.

(2) Socket系统调用

不管Socket内部机制如何,它提供给应用程序员的最终界面是一组系统功能调用.下面,我们一一给出重要的Socket系统调用.

1. 创建 Socket ----- socket()

调用格式如下:

sockid = socket (af,type,protocol)

af : 地址族,指本socket所用地址类型.

type : 类型,指创建socket的应用程序所希望的通信服务器类型.

protocol : 协议,指本socket请求的协议.

2. 指定本地地址 ---- bind()调用

bind()将本地socket地址与所创建的socket联系起来,即将本socket 地址赋予socket,以指定本地半相关.bind()的作用相当于给socket命名,调用格式为:

bind (sockid,localaddr,addrlen)

sockid : socket号.

localaddr : 本地socket地址.

addrlen : 地址长度.

3. 建立socket连接 ---- connect () 与 accept ()调用

这两个系统调用用于完成整个相关的建立.其中connect用于建立连接 .调用格为:

connect (sockid,destaddr,addrlen)

destaddr : 指向对方socket地址(信宿地址)结构的指针.

accept : 用于面向连接的服务器,其调用格式为:

newsock = accept (sockid,clientaddr,paddrlen)

clientaddr : 指向客户socket地址指针.

paddrlen : 客户socket地址长度.

4. listen() 调用

此调用用于面向连接服务器,表明它愿意接收连接,listen()在accept()之前调用,格式为:

listen (sockid,quelen)

quelen : 请求队列长度.

5. 发送数据 ---- write(),writev(),send()与sendto(),sendmsg()

用于socket数据发送的系统调用一共有五个,其中三

个,write(),writev()和send()用于面向连接传输,其余两个用于无连接传输.

面向连接的调用可以不指定信宿地址,而无连接的调用必须指定.假如无连接

相关文档
最新文档