好文档 - 专业文书写作范文服务资料分享网站

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

天下 分享 时间: 加入收藏 我要投稿 点赞

王体方10109281王雁飞 10109282 实验课成绩

学生学号

电子科技大学

学 生 实 验 报 告 书

实验课程名称 《计算机网络》 实验七 开 课 学 院 软件工程学院 指导老师 红标 学 生 姓 名 王体方 王雁飞 学生专业班级 软件2班

2011 — 2012 学年 第 二 学期

实验课程名称: 计算机网络

实验项目名称 实验者 客户和服务器通信编程实现 王体方 王雁飞 专业班级 软件2 班 实验成绩 实验日期 2012年 5月 18日 第一部分:实验分析与设计 一、实验容描述(问题域描述) 1、实验目的 1.1理解套接字(socket)通信的基本原理和机制 1.2理解进程间通信的机制。 2、实验要求 分别编写客服端和服务器端代码,建立客户端与服务器端之间正确的socket连结(语言自选,附源代码) 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等) 1.实验原理 socket的英文原义是“孔”或“插座”。在这里作为4BDS UNIX的进程通信机制,取后一种意义。socket非常类似于插座。以一个国家级网为例。的通话双方相当于相互通信的2个进程,区号是它的网络地址;区一个单位的交换机相当于一台主机,主机分配给每个用户的局相当于socket号。任何用户在通话之前,首先要占有一部机,相当于申请一个socket;同时要知道对方的,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区,还要拨对方区号,相当于给出网络地址)。对方假如在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向机发出信号和对方从机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起机相当于关闭socket,撤消连接。 一个完整的socket有一个本地唯一的socket号,由操作系统分配。 常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_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接口还定义了原始Socket(SOCK_RAW),允许程序使用低层协议;protocol通常赋值\。Socket()调用返回一个整型socket描述符,你可以在后面的调用使用它。 Socket描述符是一个指向部数据结构的指针,它指向描述符表入口。调用Socket函数时,socket执行体将建立一个Socket,实际上\建立一个Socket\意味着为一个Socket数据结构分配存储空间。 Socket执行体为你管理描述符表。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。 socket在测量软件中的使用也很广泛 2.实验步骤 本实验在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.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 = new 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 = \ //本机ip IPAddress ServerIp = IPAddress.Parse(ip); IPEndPoint iep = new IPEndPoint(ServerIp, 8000); LisSocket.Bind(iep); //绑定socket toolStripStatusLabel1.Text = \正在监听:\ LisSocket.Listen(50); //开始监听 newSocket = LisSocket.Accept(); //获取连接请求的Socket while (true) { try { byte[] byteMessage = new byte[100]; newSocket.Receive(byteMessage); //接受信息 toolStripStatusLabel1.Text = \收到信息\ Control.CheckForIllegalCrossThreadCalls = false; strmes += \客户端 \ \+Encoding.Default.GetString(byteMessage).Trim(new char[] { '\\0' })+\ richTextBox1.Text = strmes; //显示信息 } catch(SocketException ex)

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

王体方10109281王雁飞10109282实验课成绩学生学号电子科技大学学生实验报告书实验课程名称《计算机网络》实验七开课学院软件工程学院指导老师红标学生
推荐度:
点击下载文档文档为doc格式
7yfgd2f7l999g5n13tny9pg7z7hdod00taq
领取福利

微信扫码领取福利

微信扫码分享