winform下TCP通信的简单应用
2012-05-11 13:38
190 查看
先看效果图:
TCP比较繁琐的就是三次握手定理,每次再发送数据前都要先建立连接确认。
TCP比较繁琐的就是三次握手定理,每次再发送数据前都要先建立连接确认。
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; using System.IO; namespace TCP { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //启动服务端 TcpListener listener; delegate void SetTextCallBack(string text); private void button1_Click(object sender, EventArgs e) { //try //{ label2.Text = "服务端已开启.."; button1.Enabled = false; listener = new TcpListener(IPAddress.Any, 3000); listener.Start(); Thread th = new Thread(new ThreadStart(ReceiveMsg)); th.Start(); th.IsBackground = true; //} //catch (Exception ex) //{ // Console.WriteLine(ex.Message); //} } public void ReceiveMsg() { while (true) { TcpClient client = listener.AcceptTcpClient(); byte[] buffer = new byte[9899]; NetworkStream stream = client.GetStream(); int len = stream.Read(buffer, 0, buffer.Length); string msg = Encoding.Unicode.GetString(buffer, 0, len); SetText(msg); stream.Flush(); stream.Close(); client.Close(); } } public void SetText(string text) { try { if (this.richTextBox1.InvokeRequired) { SetTextCallBack d = new SetTextCallBack(SetText); this.Invoke(d, new object[] { text }); } else { this.richTextBox1.Text += DateTime.Now.ToString() + "\n" + text + "\n"; } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button2_Click(object sender, EventArgs e) { try { //FileStream fs = new FileStream(textBox2.Text,FileMode.OpenOrCreate,FileAccess.Read); //byte[] buff=new byte[fs.Length]; //int rea = fs.Read(buff,0,buff.Length); string ip = textBox1.Text; string msg = richTextBox2.Text; //msg = string.Format("{0}:{1}:{2}:{3}:{4}:{5}",1,DateTime.Now.Ticks,"007","www","32",msg); TcpClient client = new TcpClient(); client.Connect(IPAddress.Parse(ip), 3000); NetworkStream stream = client.GetStream(); byte[] buffer = Encoding.Unicode.GetBytes(msg); stream.Write(buffer, 0, buffer.Length); //stream.Write(buff,0,rea); //label6.Text = "文件发送成功!"; MessageBox.Show("发送成功!"); } catch (Exception ex) { MessageBox.Show("服务端未开启!"); } } private void button2_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { this.button2_Click(sender,e); } } //存放的目录 // private void button4_Click(object sender, EventArgs e) // { // FolderBrowserDialog fbd = new FolderBrowserDialog(); // if(fbd.ShowDialog()==DialogResult.OK) // { // textBox3.Text = fbd.SelectedPath; // } // } //发送的文件 /// private void button3_Click(object sender, EventArgs e) //{ // OpenFileDialog ofd = new OpenFileDialog(); // if(ofd.ShowDialog()==DialogResult.OK) // { // textBox2.Text = ofd.FileName; // } // } //文件发送 //private void button5_Click(object sender, EventArgs e) //{ // FileStream fs = new FileStream(textBox2.Text,FileMode.Open,FileAccess.Read); // byte[] buffer = new byte[fs.Length]; // int rea=fs.Read(buffer,0,buffer.Length); // TcpClient client = new TcpClient(); // string ip = textBox1.Text; // client.Connect(IPAddress.Parse(ip),3000); // NetworkStream ns = client.GetStream(); // ns.Write(buffer,0,rea); // MessageBox.Show("文件发送成功!"); // fs.Flush(); // ns.Flush(); // fs.Close(); // ns.Close(); //} } }
相关文章推荐
- (转)winform下TCP通信的简单应用
- 实现采用客户/服务器通信模式,基于TCP网络通信协议的多客户端简单应用之案例分析
- (转)winform下UPD通信的简单应用
- winform下Socket通信的简单应用
- 实现采用客户/服务器通信模式,基于TCP网络通信协议的多客户端简单应用
- winform下UPD通信的简单应用
- 证书的应用之一 —— TCP&SSL通信实例及协议分析(中)
- Linux下套接字详解(四)----简单的TCP套接字应用(迭代型)
- 【转】 C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- C++基于TCP/IP简单的客户端、服务器通信程序实例
- 基于TCP通信的简单服务端和客户端程序
- 证书的应用之一 —— TCP&SSL通信实例及协议分析(下)
- 初探基于TCP的服务器/客户端结构的聊天系统(二)之应用层通信协议设计
- winform程序之comboBox控件应用四则运算(简单)
- TCP/IP-协议族----17、应用层简单
- winform程序之人员选择listbox控件应用了一点arraylist(简单)
- linux 网络编程之最简单的tcp通信服务端
- TCP通信过程中各步骤的状态---(简单解释)
- 简单的网络通信程序 TCP
- 证书的应用之一 —— TCP&SSL通信实例及协议分析(下)