- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE
PAGE 21
《高级网络程序设计》
课程设计报告
题 目 基于TCP的局域网即时消息系统
的客户端和服务器端的设计与实现
学 号
姓 名
计算机网络工程教研室
2016年01月11 日
PAGE \* MERGEFORMAT
目 录
TOC \o 1-2 \h \z \u
一、课程设计内容………………………………………..2
二、设计目的……………………………………………..2
三、设计步骤……………………………………………..2
四、具体要求………………………………………… 3
五、实验代码……………………………………………. 3
六、实验结果……………………………………..…… 20
七、参考文献……………………………………..…… 22
八、实验心得……………………………………..…… 22
天津科技大学计算机学院 《高级网络程序设计》课程设计
PAGE \* MERGEFORMAT0
一、课程设计内容
1. Winsock的启动与终止。
2. Winsock的创建及绑定和关闭。
3. 建立通信连接listen及accept和connect。
4. 数据的传输。
5. 简单的客户机/服务器之间的通信。
二、设计目的
1. 熟悉Windows Socket的常用函数的形式和使用方法,理解数据通信的过程。
2. 掌握如何利用C#进行TCP协议开发,完成基于TCP的局域网即时消息系统的客户端和服务器端的设计与实现。
三、设计步骤
在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。该模式的建立基于以下两点:(1)非对等作用;(2)通信完全是异步的。客户机/服务器模式在操作过程中采取的是主动请示方式:
1、首先服务器方要先启动,并根据请示提供相应服务,其过程如下:
(1)打开一通信通道并告知本地主机,它愿意在某一个公认地址上接收客户请求。
(2)等待客户请求到达该端口。
(3)接收到重复服务请求,处理该请求并发送应答信号。
(4)返回第二步,等待另一客户请求
(5)关闭服务器。
2、客户方:
(1)打开一通信通道,并连接到服务器所在主机的特定端口。
(2)向服务器发送服务请求报文,等待并接收应答;继续提出请求……
(3)请求结束后关闭通信通道并终止。
3、TCP连接的套接字的系统调用时序图如图2.1所示。
4、TCP连接的应用程序流程图如图2.2所示。
图2.1 TCP连接的套接字的系统调用时序图
图2.2 TCP连接的应用程序流程图
四、具体要求
需要有基本的双人、多人文字聊天功能,上下线通知,在线用户列表,点对点文件传输,所有的文字或文件传输需支持CRC-32校验,具有出错重传机制;
五、实验代码
(1)客户机:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SocketClient
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Socket _socketSend;
private void btnStart_Click(object sender, EventArgs e)
{
//创建负责通信的Socket:
if (_socketSend == null || _socketSend.Connected == false)
{
_socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Strea
文档评论(0)