(转)winform下TCP通信的简单应用

本文转载自:http://blog.csdn.net/wanlong360599336/article/details/7557064

先看效果图:

(转)winform下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通信的简单应用,布布扣,bubuko.com

(转)winform下TCP通信的简单应用

上一篇:win2008 mvc4.0 项目发布错误(HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。)解决方案:


下一篇:css样式书写顺序