




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、学生学号王体方10109281实验课王雁飞10109282成绩电子科技大学学生实验报告书实验课程名称 计算机网络 实验七 开 课 学 院 软件工程学院 指导老师 红标学 生 姓 名王体方 王雁飞学生专业班级软件 2 班2011 2012 学年 第 二 学期实验课程名称: 计算机网络实验项目名称客户和服务器通信编程实现实验成绩实验者王体方 王雁飞专业 班级软件 2 班实验日期2012 年 5 月18 日第一部分:实验分析与设计一、实验容描述(问题域描述)1、实验目的1.1 理解套接字 (socket) 通信的基本原理和机制1.2 理解进程间通信的机制。2、实验要求 分别编写客服端和服务器端代码,
2、建立客户端与服务器端之间正确的 socket 连结(语言自 选,附源代码)二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等)1.实验原理socket 的英文原义是 “孔”或“插座”。在这里作为 4BDS UNIX的进程通信机制, 取后一种意义。 socket 非常类似于插座。 以一个国家级网为例。的通话双方相当于 相互通信的 2 个进程,区号是它的网络地址;区一个单位的交换机相当于一台主机, 主机分配给每个用户的局相当于 socket 号。任何用户在通话之前,首先要占有一 部机,相当于申请一个 socket ;同时要知道对方的,相当于对方有一个固定的 socket。然后向对
3、方拨号呼叫, 相当于发出连接请求 (假如对方不在同一区, 还要拨 对方区号,相当于给出网络地址 )。对方假如在场并空闲 (相当于通信的另一主机开 机且可以接受连接请求 ),拿起话筒,双方就可以正式通话,相当于连接成功。双 方通话的过程, 是一方向机发出信号和对方从机接收信号的过程, 相当于向 socket 发送数据和从 socket 接收数据。通话结束后,一方挂起机相当于关闭 socket,撤 消连接。一个完整的 socket 有一个本地唯一的 socket 号,由操作系统分配。常用的 Socket 类型有两种:流式 Socket(SOCK_STREAM)和数据报式 Socket ( SOCK
4、_DGRAM)。流式是一种面向连接的 Socket,针对于面向连接的 TCP服务应 用;数据报式 Socket 是一种无连接的 Socket,对应于无连接的 UDP 服务应用。Socket建立为了建立 Socket,程序可以调用 Socket 函数,该函数返回一个类似于 文件描述符的句柄。 socket 函数原型为: int socket(int domain, int type, int protocol);domain 指明所使用的协议族, 通常为 PF_INET,表示互联网协议族(TCP/IP 协议族);type 参数指定 socket 的类型: SOCK_STREAM或 SOCK_DG
5、RAM,Socket 接口还定义了原始 Socket(SOCK_RAW),允许程序使用低层协议; protocol 通常 赋值0。Socket()调用返回一个整型 socket 描述符,你可以在后面的调用使用它。 Socket 描述符是一个指向部数据结构的指针,它指向描述符表入口。调用 Socket 函数时, socket 执行体将建立一个 Socket,实际上 建立一个 Socket意味着为一个 Socket数据结构分配存储空间。 Socket 执行体为你管理描述符表。两个网络程序 之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远 端主机地址和远端协议端口。 Sock
6、et 数据结构中包含这五种信息。 socket 在测量 软件中的使用也很广泛 2.实验步骤 本实验在 VS2008下实现,本机 ip 为 94,实验要实现客户端与服务端 在 8000 号端口的通信,具体代码如下: 服务端代码 using System;using System.Collections.Generic; using System.ComponentModel;using System.Data; using System.Drawing;using System.Linq; using System.Text;using System.Windows.Fo
7、rms; using System.Net;using System.Net.Sockets; using System.Threading;namespace temppublic partial class Form1 : FormThread LisThread;/ 线程Socket LisSocket;/ 用于监听Socket newSocket;/ 用于通信EndPoint point;string strmes = string.Empty; /用于存放通信的信息public Form1()InitializeComponent();private void button1_Cli
8、ck(object sender, EventArgs e)/ 建立连接LisThread = new Thread(new ThreadStart(BeginListern);/ 开线程执行 BeginListern 方法 LisThread.Start();/ 线程开始执行 button1.Enabled = false;public void BeginListern()LisSocket = newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);/ 初始化 LisSocketstring ip
9、= 94;/ 本机 ipIPAddress ServerIp = IPAddress.Parse(ip); IPEndPoint iep = new IPEndPoint(ServerIp, 8000); LisSocket.Bind(iep);/ 绑定 sockettoolStripStatusLabel1.Text = 正在监听: + iep.ToString(); LisSocket.Listen(50);/ 开始监听newSocket = LisSocket.Accept(); / 获取连接请求的 Socket while (true)trybyte byteM
10、essage = new byte100; newSocket.Receive(byteMessage); / 接受信息 toolStripStatusLabel1.Text = 收到信息 ;Control.CheckForIllegalCrossThreadCalls = false; strmes += 客户端 + DateTime.Now.ToString() + : n +Encoding.Default.GetString(byteMessage).Trim(new char 0 )+rn;richTextBox1.Text = strmes;/ 显示信息catch(SocketEx
11、ception ex)MessageBox.Show( ex.ToString();private void button3_Click(object sender, EventArgs e)/ 退出Application.Exit();private void button2_Click(object sender, EventArgs e)/ 发送信息if (richTextBox2.Text != )byte byteData = Encoding.ASCII.GetBytes(richTextBox2.Text); newSocket.Send(byteData);/ 发送信息即由服务
12、器往客户端上发信息 strmes += 服务端 + DateTime.Now.ToString() + :n +richTextBox2.Text + rn;richTextBox2.Text = ;richTextBox1.Text = strmes;/ 更新输出toolStripStatusLabel1.Text = 成功发送信息 ;private void button4_Click(object sender, EventArgs e)/ 清空richTextBox1.Text = ;strmes = string.Empty;private void button5_Click(ob
13、ject sender, EventArgs e)/ 断开连接tryLisSocket.Close();/ 关闭 SocketLisThread.Abort();/ 线程停止 LisThread = null;button1.Enabled = true;toolStripStatusLabel1.Text = ;catch (Exception ex)MessageBox.Show(ex.Message);客户端代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Da
14、ta;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;using System.Net.Sockets;using System.Net;namespace tmpClientpublic partial class Form1 : Formpublic static Socket ClientSocket; / 客户端 SocketThread thread;string strev = string.Empty; / 存放通信
15、信息 public Form1()InitializeComponent();private void button2_Click(object sender, EventArgs e) / 往服务器上发送信息if (ClientSocket.Connected) /判断 Socket 是否已连接if (richTextBox2.Text != )byte SendMessage = new byte100;SendMessage = Encoding.ASCII.GetBytes(richTextBox2.Text); ClientSocket.Send(SendMessage);/ 将数据
16、数据发送到连接的 Socket 中 toolStripStatusLabel1.Text = 成功发送信息 ;strev += 客户端 + DateTime.Now.ToString() + :n +richTextBox2.Text + rn;richTextBox1.Text = strev;/ 显示通信信息richTextBox2.Text = ; elseMessageBox.Show( 尚未建立连接 );private void button3_Click(object sender, EventArgs e)/ 退出Application.Exit();public void ta
17、rgett()/ 接收来自服务器上的信息 toolStripStatusLabel1.Text = 连接已建立 ; while (true)Control.CheckForIllegalCrossThreadCalls = false; byte bytes = new byte100;int rev = ClientSocket.Receive(bytes); / 接受信息 if (rev = 0) break;strev += 服务器 + DateTime.Now.ToString() + :n + Encoding.Default.GetString(bytes).Trim(new ch
18、ar 0 ) + rn;richTextBox1.Text = strev; toolStripStatusLabel1.Text = 收到信息 ;private void button1_Click(object sender, EventArgs e)/ 为客户端 Socket 建立连接到服务器ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);string ip = 94;/ 服务器 ipIPAddress ipa = IPAddress.Parse(ip); IPEndPoint iep = new IPEndPoint(ipa, 8000); toolSt
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新能源汽车市场营销策略考试题及答案
- 2025年度企业安全生产知识竞赛题库及答案(共197题)
- 电商种草经济崛起下的内容营销策略研究报告
- 空间分析考试题及答案
- 数字彼此关系试题及答案
- 安全工程师考试组织能力试题及答案
- 气瓶使用管理试题及答案
- 2025房地产工程管理面试试题及答案
- 综合岗位面试试题及答案
- 教育行业2025年并购整合策略:产业链升级与创新路径研究报告
- 韦氏测试题及答案
- 历年贵州特岗试题及答案
- 2025怎样正确理解全过程人民民主的历史逻辑、实践逻辑与理论逻辑?(答案3份)
- GB/T 45501-2025工业机器人三维视觉引导系统通用技术要求
- 财务英文词汇大全
- 《基于绘本阅读的幼儿语言能力发展研究(论文)》9300字
- 印巴战争(修改稿)
- 工程项目管理实施方案(5篇)
- 2021年全国质量奖现场汇报材料-基础设施、设备及设施管理过程课件
- 防爆电气失爆判别标准和常见失爆现象汇总
- 10kV高压开关柜整定计算书
评论
0/150
提交评论