首页 > 代码库 > C#TCPClient应用-一个简单的消息发送和接收

C#TCPClient应用-一个简单的消息发送和接收

技术分享

技术分享

 

TcpSend窗口用于发送消息,另外写一个用于接收消息的应用程序,消息接受到以后,必须要关闭接收消息的窗口,才能在接收新的消息,不知道怎么能解决这个问题。

源代码:

发送消息的窗口代码

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.IO;


namespace TCPSocket
{
    public partial class FrmTcpSend : Form
    {
        public FrmTcpSend()
        {
            InitializeComponent();
        }

        private void buttonSendFile_Click(object sender, EventArgs e)
        {
           // TcpClient tcpClient = new TcpClient(textBoxHostName.Text, Int32.Parse(textBoxPort.Text));
            TcpClient tcpClient = new TcpClient();
            tcpClient.Connect(IPAddress.Parse(textBoxHostName.Text), Int32.Parse(textBoxPort.Text));

            NetworkStream ns = tcpClient.GetStream();

            FileStream fs = File.Open("..\\..\\FrmTcpSend.cs", FileMode.Open);

            int data = http://www.mamicode.com/fs.ReadByte();

            while (data != -1)
            {
                ns.WriteByte((byte)data);
                data = http://www.mamicode.com/fs.ReadByte();
            }

            fs.Close();
            ns.Close();
            tcpClient.Close();

        }

        private void buttonSendMessage_Click(object sender, EventArgs e)
        {
            TcpClient tcpClient = new TcpClient();
            tcpClient.Connect(IPAddress.Parse(textBoxHostName.Text), Int32.Parse(textBoxPort.Text));

            NetworkStream ns = tcpClient.GetStream();


            if (ns.CanWrite)
            {
                Byte[] sendBytes = Encoding.UTF8.GetBytes(textBoxMessage.Text);
                ns.Write(sendBytes, 0, sendBytes.Length);
            }
            else
            {
                MessageBox.Show("不能写入数据流", "终止", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                //Console.WriteLine("You cannot write data to this stream.");
                tcpClient.Close();

                // Closing the tcpClient instance does not close the network stream.
                ns.Close();
                return;
            }


            ns.Close();
            tcpClient.Close();

        }
    }
}

 

C#TCPClient应用-一个简单的消息发送和接收