ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:170.40KB ,
资源ID:11826307      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11826307.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(客户端和服务端的编程实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

客户端和服务端的编程实现.docx

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;同时要知道对方的号码,相当于对

3、方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)。对方假如在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向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_DGRAM,Socket接口还定义了原始Sock

5、et(SOCK_RAW),允许程序使用低层协议;protocol通常赋值0。Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。 Socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上建立一个Socket意味着为一个Socket数据结构分配存储空间。 Socket执行体为你管理描述符表。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。 socket在测量软件中的使用也很广泛2.实验步骤

6、本实验在VS2008下实现,本机ip为169.254.59.194,实验要实现客户端与服务端在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.Forms;using System.Net;using System.Net.Sockets;using System

7、.Threading;namespace temp public partial class Form1 : Form Thread LisThread; /线程 Socket LisSocket; /用于监听 Socket newSocket; /用于通信 EndPoint point; string strmes = string.Empty; /用于存放通信的信息 public Form1() InitializeComponent(); private void button1_Click(object sender, EventArgs e) /建立连接 LisThread = ne

8、w Thread(new ThreadStart(BeginListern);/开线程执行BeginListern方法 LisThread.Start();/线程开始执行 button1.Enabled = false; public void BeginListern() LisSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);/初始化LisSocket string ip = 169.254.59.194; /本机ip IPAddress ServerIp = IPAddre

9、ss.Parse(ip); IPEndPoint iep = new IPEndPoint(ServerIp, 8000); LisSocket.Bind(iep); /绑定socket toolStripStatusLabel1.Text = 正在监听: + iep.ToString(); LisSocket.Listen(50); /开始监听 newSocket = LisSocket.Accept(); /获取连接请求的Socket while (true) try byte byteMessage = new byte100; newSocket.Receive(byteMessage

10、); /接受信息 toolStripStatusLabel1.Text = 收到信息; Control.CheckForIllegalCrossThreadCalls = false; strmes += 客户端 + DateTime.Now.ToString() + : n +Encoding.Default.GetString(byteMessage).Trim(new char 0 )+rn; richTextBox1.Text = strmes; /显示信息 catch(SocketException ex) MessageBox.Show( ex.ToString(); privat

11、e 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);/发送信息即由服务器往客户端上发信息 strmes += 服务端 + DateTime.Now.ToStri

12、ng() + :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(object sender, EventArgs e) /断开连接 try Li

13、sSocket.Close();/关闭Socket LisThread.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.Data;using System.Drawing;using Sys

14、tem.Linq;using System.Text;using System.Windows.Forms;using System.Threading;using System.Net.Sockets;using System.Net;namespace tmpClient public partial class Form1 : Form public static Socket ClientSocket; /客户端Socket Thread thread; string strev = string.Empty; /存放通信信息 public Form1() InitializeComp

15、onent(); 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); /将数据数据发送到连接的Socket中 toolStripSta

16、tusLabel1.Text = 成功发送信息; strev += 客户端 + DateTime.Now.ToString() + :n + richTextBox2.Text + rn; richTextBox1.Text = strev; /显示通信信息 richTextBox2.Text = ; else MessageBox.Show(尚未建立连接); private void button3_Click(object sender, EventArgs e) /退出 Application.Exit(); public void targett() /接收来自服务器上的信息 tool

17、StripStatusLabel1.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 char 0 ) + rn; richTextBox

18、1.Text = strev; toolStripStatusLabel1.Text = 收到信息; private void button1_Click(object sender, EventArgs e) /为客户端Socket建立连接到服务器 ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); string ip = 169.254.59.194; /服务器ip IPAddress ipa = IPAddress.Parse(ip); IPEndPoint

19、 iep = new IPEndPoint(ipa, 8000); toolStripStatusLabel1.Text = 已经建立连接.; try ClientSocket.Connect(iep); /连接到服务器 thread = new Thread(new ThreadStart(targett); /开线程执行targett方法 thread.Start(); /开始线程 button1.Enabled = false; catch(SocketException ex) MessageBox.Show(ex.ToString(); private void button4_Cl

20、ick(object sender, EventArgs e) /断开连接 ClientSocket.Close(); /关闭Socket thread.Abort(); /停止线程 thread = null; toolStripStatusLabel1.Text = ; button1.Enabled = true; toolStripStatusLabel1.Text = ; private void button5_Click(object sender, EventArgs e) /清空输出 richTextBox1.Text = ; strev = string.Empty; 测试结果服务端开启监听客户端建立连接客户服务端的回复三、主要仪器设备及耗材VS2008

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1