您的位置:首页 > 理论基础 > 计算机网络

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

2015-01-09 02:45 549 查看




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 = fs.ReadByte();

while (data != -1)
{
ns.WriteByte((byte)data);
data = 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();

}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: