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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

TCP UDP通讯编程Word文件下载.docx

1、(3) 复习聊天、邮件、HTTP服务的相关原理。(4) 熟悉相关编程语言及编程工具环境。7注意事项(1)遵守实验纪律,爱护实验设备。(2)提交详细实验报告一份。实验过程和结果不能简单地复制相关命令或内容,要有理解和分析。8程序代码1.服务器端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;usi

2、ng System.Net;using System.Net.Sockets;using System.Threading;using System.IO;namespace WindowsFormsApplication1 public partial class Form1 : Form public Form1() InitializeComponent(); this.Init(); tab2.Visible = true; tab3.Visible = false; tab1.Visible = false; private void btnLog_Click(object send

3、er, EventArgs e) if (txtIP.Text = | txtPort.Text = ) MessageBox.Show(请输入IP地址或端口号, 提示信息, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1); return; else try IPAddress ipadd = IPAddress.Parse(this.txtIP.Text); int port = Convert.ToInt32(this.txtPort.Text); tab3.Visible = t

4、rue; tab1.Visible = true; this.Init2(); this.btnImgFile.Enabled = false; this.Text = 服务器 + DateTime.Now.ToString() + + DateTime.Now.DayOfWeek.ToString(); richTextBox1.AppendText(System:服务器已进入聊天室 + DateTime.Now.ToLongTimeString() + -.rn); string SerIp = txtIP.Text.ToString(); string SerPort = txtPort

5、.Text.ToString(); labip.Text = IP地址: + + SerIp + ; labport.Text = 端口号: + SerPort; catch (Exception)您输入的IP地址或端口号不正确n请重新输入!错误, MessageBoxButtons.OK, MessageBoxIcon.Error); /重置服务器信息 private void btnResent_Click_1(object sender, EventArgs e) txtIP.Clear(); txtPort.Clear(); private void Init() richTextBo

6、x1.Visible = false; txt1_sendinfo.Visible = false; private void Init2() richTextBox1.Visible = true; txt1_sendinfo.Visible = true; private OpenFileDialog openfiledialog = new OpenFileDialog(); private SaveFileDialog savefiledialog = new SaveFileDialog(); private byte img;/传输图片用字节数组 private int imgfl

7、ag = 0; private FileStream fstream; public delegate void UpdateRichTextBox(string msg);/异步委托代理 public delegate void UpdateImg(Stream s); private Socket socket; /服务器端套接字 private Socket clientSocket; /客户端连接套接字 private Thread thread; /启动服务器开始监 private void btn_start_Click(object sender, EventArgs e) IP

8、Address ip = IPAddress.Parse(this.txtIP.Text); IPEndPoint server = new IPEndPoint(ip, Int32.Parse(this.txtPort.Text); /创建服务器套接字 socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Bind(server);/绑定端口号 socket.Listen(10); thread = new Thread(new ThreadStart(Acce

9、ptMessage); thread.Start();/开始监听 服务器Taking. richTextBox1.Clear();服务器已启动 btnImgFile.Enabled = true; btn_start.Enabled = false; btn_stop.Enabled = true; catch (Exception ex)服务器: + ex.Message); this.btn_start.Enabled = true; /接收客户端信息 public void AcceptMessage() /异步接收信息后台线程方法 this.clientSocket = socket.

10、Accept(); this.richTextBox1.Clear();服务器连接成功 while (true) if (this.clientSocket = null | this.clientSocket.Connected = false) break; NetworkStream netStream = new NetworkStream(this.clientSocket);/通 过yclientSocket对象获取NetworkStream对象 /得到一条消息的长度 byte dataSize = new byte4; netStream.Read(dataSize, 0, 4)

11、; int size = System.BitConverter.ToInt32(dataSize, 0); /循环接收直到一条完整的消息全部读入到字节数组中 byte message = new bytesize; int dataleft = size; int start = 0; if (size 0) while (dataleft int recv = netStream.Read(message, start, dataleft); start += recv; dataleft -= recv; if (message0 = 101)/101代表括传输图片 MemoryStre

12、am ms = new MemoryStream(message, 1, message.Length - 1); richTextBox1.BeginInvoke(new UpdateImg(ViewImg), new object ms ); else/默认进行普通传输 string Msg = System.Text.Encoding.Unicode.GetString(message, 1, message.Length - 1); this.richTextBox1.BeginInvoke(new UpdateRichTextBox(UpdateMessage), new objec

13、t Msg ); Thread.Sleep(100); catch (System.Net.Sockets.SocketException se)服务器 + se.Message); /点击“发送”按钮 private void btn_send_Click(object sender, EventArgs e) if (txt1_sendinfo.Text = 请?先输?入?内容!? txt1_sendinfo.Clear(); txt1_sendinfo.Focus(); if (imgflag = 1) /发送图片时 byte imgSize = new byte4; /将32位整数值转

14、换为字节数组 imgSize = System.BitConverter.GetBytes(img.Length + 1);/其中加1是因为后面了一个101做分隔符 NetworkStream netStream = new NetworkStream(clientSocket); netStream.Write(imgSize, 0, 4); netStream.WriteByte(101);/分隔符 netStream.Write(img, 0, img.Length); netStream.Flush(); this.richTextBox1.SelectionColor = Color

15、.SteelBlue; this.richTextBox1.AppendText(+ DateTime.Now.ToLongTimeString() + rn this.richTextBox1.SelectionStart = this.richTextBox1.Text.Length; Clipboard.SetDataObject(Image.FromStream(fstream); richTextBox1.Paste();n fstream.Flush(); fstream.Close();/此流必须在这里才可以消除 txt1_sendinfo.Paste(); this.richT

16、extBox1.Focus(); this.txt1_sendinfo.Text = this.txt1_sendinfo.Focus(); imgflag = 0;/复原/不执行后面的传输文本信息 catch (System.Exception ex) /发送文本信息时 string str = + txt1_sendinfo.Text; int i = str.Length; if (i = 0) /因为astr为aUnicode编括码,每字符占个字节,所以实害际字节数应为字符个数*2 i *= 2; dataSize = System.BitConverter.GetBytes(i +

17、1);/其中加1因为后面写了一个做分隔符 byte sendbytes = System.Text.Encoding.Unicode.GetBytes(str); netStream.Write(dataSize, 0, 4); netStream.WriteByte(1); netStream.Write(sendbytes, 0, sendbytes.Length); richTextBox1.SelectionColor = Color.SteelBlue; this.richTextBox1.AppendText(str + this.txt1_sendinfo.Rtf = /断开连接

18、 private void btn_stop_Click(object sender, EventArgs e) socket.Close(); thread.Abort(); thread.Join(10); btn_stop.Enabled = false;+ DateTime.Now.ToString() + 服务器断开连接. rn /接收文本 private void UpdateMessage(string strmsg) /将异步接收到的信息显示在富文本框里 this.richTextBox1.SelectionColor = Color.LightCoral; this.rich

19、TextBox1.AppendText(strmsg + /接收图片信息 private void ViewImg(Stream s) /将异步接收到的信息显示在富文本框里 richTextBox1.SelectionStart = richTextBox1.Text.Length; richTextBox1.SelectionColor = Color.LightCoral;服务器接图片 Clipboard.SetDataObject(Image.FromStream(s);/利用剪切板 richTextBox1.Focus(); /上传图片文件中的图片 private void btnIm

20、gFile_Click(object sender, EventArgs e) openfiledialog.Filter = 所有文件t(*.*)位图文(*.bmp)文件t(.jpg)文件t(.gif) if (openfiledialog.ShowDialog() = DialogResult.OK) String strpath = openfiledialog.FileName; fstream = new FileStream(strpath, FileMode.Open); BinaryReader breader = new BinaryReader(fstream); img

21、= breader.ReadBytes(int)fstream.Length); imgflag = 1; /退出聊天室 private void btn_Exit_Click(object sender, EventArgs e) if (btn_stop.Enabled != true) this.Close(); Application.Exit();请先断开连接? /取消发送 private void btnRest_Click(object sender, EventArgs e) /清屏 private void btnClear_Click(object sender, EventArgs e)2.客户端 tab1.Visi

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

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