socket编程-实验报告_第1页
socket编程-实验报告_第2页
socket编程-实验报告_第3页
socket编程-实验报告_第4页
socket编程-实验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学与计算机学院 计算机网络 实验报告年级 学号 姓名 成绩 专业 网络工程 实验地点 指导教师 实验项目 socket点对点聊天工具 实验日期 2012-5-12 一、 实验目的 通过本实验熟悉和掌握socket编程的基本理论和方法。掌握给予TCP的工作原理以及socket编程的一般方法,能够编写简单的点对点网络聊天应用程序。二、 实验原理 在Visual Studio2005的运行环境下,用c#语言编写,socket套接字可实现网络的连接和数据在两台电脑间的相互传输。运用相应的包可实现字体和颜色的改变。利用线程对程序进行控制。三、 实验要求 可进行点对点的聊天,要求字可以进行颜色和字体的改

2、变。可通过使用socket套接字进行两台电脑的连接与数据传输。四、 实验步骤、结果(程序+注释+截图)及分析 1、定义一些全局变量,控制程序的执行,代码如下: private Socket socket;/定义套接字 private Thread thread1;/定义线程 private IPAddress ip = IPAddress.Parse("");/定义IP地址,并给其一个初始值 2、与客户端进行监听,代码如下: try ip = IPAddress.Parse(this.tb_IP.Text); /输入IP地址检查格式是否正确 catch M

3、essageBox.Show("地址格式不对,请重新输入!"); return; try if (tb_port.Text = "") /对输入的端口号进行检查,看其是否符合要求 MessageBox.Show("端口号不可为空,请输入端口号!"); return; try Convert.ToInt32(tb_port.Text); catch MessageBox.Show("端口号输入错误,请仔细查看!"); return; if (Convert.ToInt32(tb_port.Text) > 655

4、35 && Convert.ToInt32(tb_port.Text) < 0) MessageBox.Show("端口号范围:0-65535"); return; /tmp2.Text = "" /tmp1.Text = "" /tmp.Text = "" this.btn_start.Enabled = false; serverl = new IPEndPoint(ip, Int32.Parse(this.tb_port.Text); socket = new Socket(Addres

5、sFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Bind(serverl); /输入IP和端口号开始监听 socket.Listen(10); clientSocket = socket.Accept(); this.lb_state.Items.Add("与客户" + clientSocket.RemoteEndPoint.ToString() + "建立链接"); thread1 = new Thread(new ThreadStart(AcceptMessage)

6、; thread1.IsBackground = true; thread1.Start(); /启动线程 catch 3、在点击开始监听按钮和停止监听时会调用下面的函数,开始监听以后建立连接,成功便可以发送数据,停止监听的时候线程也会被释放。点击开始监听按钮代码:private void btn_send_Click(object sender, EventArgs e) if (btn_start.Enabled = true) MessageBox.Show("请先进行监听!"); return; if (rtb_send.Text = "") M

7、essageBox.Show("发送框不可为空!"); return; 停止监听代码: private void btn_stop_Click(object sender, EventArgs e) this.btn_start.Enabled = true; try socket.Close(); if (clientSocket.Connected) clientSocket.Close(); thread1.Abort(); /线程释放 4、对发送的信息进行自体和颜色的编辑。颜色按钮代码: ColorDialog colorDialog = new ColorDial

8、og(); colorDialog.AllowFullOpen = true; colorDialog.FullOpen = true; colorDialog.ShowHelp = true; colorDialog.Color = Color.Black;/初始化当前文本框中的字体颜色,当用户在ColorDialog对话框中点击"取消"按钮 colorDialog.ShowDialog(); rtb_send.SelectionColor = rtb_receive.SelectionColor = colorDialog.Color;字体按钮代码: FontDialo

9、g fontDialog = new FontDialog(); fontDialog.Color = rtb_send.ForeColor = rtb_receive.ForeColor; fontDialog.AllowScriptChange = true; fontDialog.ShowColor = true; if (fontDialog.ShowDialog() != DialogResult.Cancel) rtb_send.SelectionFont = fontDialog.Font;/将当前选定的文字改变字体 rtb_receive.SelectionFont = fon

10、tDialog.Font; 5、运行结果如下: 五、 实验遇到的困难及解决 1.无法建立连接开始时对socket函数理解不够透彻,只是编写了两部分程序,最后调试好以后无法建立连接,以为socket定义的不正确。2端口号设置 端口号是老师常常讲的一个概念但是在定义的时候还是出现了错误,应该说是冲突,最后直接将端口号定义为63345这样比较大的数。3无法传输字体与颜色 解决方法是RichTextBox.Rtf格式进行传输,Rtf的格式可以传送文字的所有形式。显示的数据无法相加及RichTextBox+=形式不可用,只能是最新发送的数据。解决方法是定义一个全局变量RichTextBox来记录发送信息,再根据发送信息的颜色和字体改变全局变量里的信息。信息累加问题解决,但此时即使传送的依然是Rtf格式,接受的也没有颜色与字体。六、 实验心得总结经过编写用socket函数来实现点对点的聊天,感觉好多东西不像自己想的那么难,但是好多东西都需要思考。经过自己认真思考与查看资料,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论