基本信息
源码名称:TCP消息发送接收实例(含服务器端+客户端)
源码大小:0.03M
文件格式:.rar
开发语言:C#
更新时间:2019-06-04
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
支持客户端与客户端发送消息
支持客户端与客户端发送消息
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace WindowsApplication1
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.TextBox textBox3;
private System.Windows.Forms.ComboBox comboBox1;
private System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.RichTextBox richTextBox2;
private System.Windows.Forms.StatusBar statusBar1;
private System.Windows.Forms.StatusBarPanel statusBarPanel1;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.Button button3;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;
private TcpClient Client;
private Thread thread;
private bool control = false;
private NetworkStream stream;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.textBox3 = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.statusBar1 = new System.Windows.Forms.StatusBar();
this.statusBarPanel1 = new System.Windows.Forms.StatusBarPanel();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.button3 = new System.Windows.Forms.Button();
this.label5 = new System.Windows.Forms.Label();
this.comboBox1 = new System.Windows.Forms.ComboBox();
this.richTextBox2 = new System.Windows.Forms.RichTextBox();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).BeginInit();
this.SuspendLayout();
//
// groupBox1
//
this.groupBox1.Controls.Add(this.textBox3);
this.groupBox1.Location = new System.Drawing.Point(248, 4);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(272, 60);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.groupBox1.Text = "注册用户名";
//
// textBox3
//
this.textBox3.Location = new System.Drawing.Point(24, 24);
this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(232, 21);
this.textBox3.TabIndex = 0;
//
// label1
//
this.label1.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(16, 12);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(80, 16);
this.label1.TabIndex = 1;
this.label1.Text = "服务器:";
//
// label2
//
this.label2.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label2.Location = new System.Drawing.Point(256, 80);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(104, 16);
this.label2.TabIndex = 2;
this.label2.Text = "信息发送到:";
//
// label4
//
this.label4.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label4.Location = new System.Drawing.Point(16, 40);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(56, 16);
this.label4.TabIndex = 4;
this.label4.Text = "端口:";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(96, 12);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(136, 21);
this.textBox1.TabIndex = 5;
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(96, 40);
this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(136, 21);
this.textBox2.TabIndex = 6;
//
// richTextBox1
//
this.richTextBox1.Location = new System.Drawing.Point(16, 120);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(405, 68);
this.richTextBox1.TabIndex = 7;
this.richTextBox1.Text = "";
//
// statusBar1
//
this.statusBar1.Location = new System.Drawing.Point(0, 362);
this.statusBar1.Name = "statusBar1";
this.statusBar1.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] {
this.statusBarPanel1});
this.statusBar1.ShowPanels = true;
this.statusBar1.Size = new System.Drawing.Size(528, 16);
this.statusBar1.TabIndex = 9;
//
// statusBarPanel1
//
this.statusBarPanel1.Name = "statusBarPanel1";
this.statusBarPanel1.Width = 200;
//
// button1
//
this.button1.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button1.Location = new System.Drawing.Point(16, 72);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(104, 32);
this.button1.TabIndex = 10;
this.button1.Text = "请求连接";
this.button1.Click = new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.Enabled = false;
this.button2.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button2.Location = new System.Drawing.Point(136, 72);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(96, 32);
this.button2.TabIndex = 11;
this.button2.Text = "关闭连接";
this.button2.Click = new System.EventHandler(this.button2_Click);
//
// button3
//
this.button3.Enabled = false;
this.button3.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.button3.Location = new System.Drawing.Point(440, 120);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(80, 32);
this.button3.TabIndex = 12;
this.button3.Text = "发 送";
this.button3.Click = new System.EventHandler(this.button3_Click);
//
// label5
//
this.label5.Font = new System.Drawing.Font("宋体", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label5.Location = new System.Drawing.Point(16, 194);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(88, 16);
this.label5.TabIndex = 13;
this.label5.Text = "接收信息:";
//
// comboBox1
//
this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBox1.Location = new System.Drawing.Point(360, 80);
this.comboBox1.Name = "comboBox1";
this.comboBox1.Size = new System.Drawing.Size(152, 20);
this.comboBox1.TabIndex = 14;
//
// richTextBox2
//
this.richTextBox2.Location = new System.Drawing.Point(16, 222);
this.richTextBox2.Name = "richTextBox2";
this.richTextBox2.Size = new System.Drawing.Size(496, 134);
this.richTextBox2.TabIndex = 15;
this.richTextBox2.Text = "";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(528, 378);
this.Controls.Add(this.richTextBox2);
this.Controls.Add(this.comboBox1);
this.Controls.Add(this.label5);
this.Controls.Add(this.button3);
this.Controls.Add(this.button2);
this.Controls.Add(this.button1);
this.Controls.Add(this.statusBar1);
this.Controls.Add(this.richTextBox1);
this.Controls.Add(this.textBox2);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.label4);
this.Controls.Add(this.label2);
this.Controls.Add(this.label1);
this.Controls.Add(this.groupBox1);
this.Name = "Form1";
this.Text = "聊天客户端";
this.Closing = new System.ComponentModel.CancelEventHandler(this.Form1_Closing);
this.Load = new System.EventHandler(this.Form1_Load);
this.groupBox1.ResumeLayout(false);
this.groupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (Client != null && Client.Connected)
CloseConnection();
}
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
}
private void button1_Click(object sender, System.EventArgs e)
{
IPAddress myIP = IPAddress.Parse("127.0.0.1");
IPEndPoint MyServer;
int myPort = 0;
try
{
myIP = IPAddress.Parse(textBox1.Text);
myPort = Int32.Parse(textBox2.Text);
}
catch
{
MessageBox.Show("输入的IP地址或端口格式不正确,请重新输入!");
}
try
{
MyServer = new IPEndPoint(myIP, myPort);
Client = new TcpClient();
Client.Connect(MyServer);
statusBarPanel1.Text = " 与主机" textBox1.Text " 端 口"
textBox2.Text "连接成功!";
string userName = textBox3.Text;
Byte[] bta = System.Text.Encoding.Default.GetBytes(userName.ToCharArray());
stream = Client.GetStream();
stream.Write(bta, 0, bta.Length);
stream.Flush();
control = true;
thread = new Thread(new ThreadStart(targett));
thread.Start();
button2.Enabled = true;
button3.Enabled = true;
button1.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void targett()
{
while (control)
{
Byte[] bta = new Byte[4096];
try
{
int p, q;
if (stream.DataAvailable)
{
p = stream.Read(bta, 0, 4096);
string s1 = System.Text.Encoding.Default.GetString(bta, 0, p);
if (s1.Length > 3)
{
string option = s1.Substring(0, 3);
s1 = s1.Remove(0, 3);
if (option == "$$$") //该消息用于刷新用户列表
GetUserList(s1);
else
if (option == ">>>")
{
p = s1.IndexOf(",", 0, s1.Length);
q = s1.IndexOf(":", 0, s1.Length);
string s2 = s1.Substring(0, p);
string s3 = s1.Substring(p 1, q - p - 1);
richTextBox2.AppendText(s2 "对" s3
"说" s1.Remove(0, q));
}
}
}
}
catch
{
MessageBox.Show("数据接收错误,已被迫关闭连接!");
try
{
Client.Close();
}
finally
{
control = false;
}
statusBarPanel1.Text = " 与主机" textBox1.Text " 端口"
textBox2.Text "断开连接!";
comboBox1.Items.Clear();
button1.Enabled = true;
button2.Enabled = false;
button3.Enabled = false;
stream.Close();
break;
}
Thread.Sleep(500);
}
}
private void GetUserList(string UserList)
{
comboBox1.Items.Clear();
StringReader sr = new StringReader(UserList);
while (sr.Peek() >= 0)
comboBox1.Items.Add(sr.ReadLine());
sr.Close();
}
private void CloseConnection()
{
string msg = "***" textBox3.Text;
Byte[] bta = new Byte[1024];
bta = System.Text.Encoding.Default.GetBytes(msg.ToCharArray());
try
{
stream.Write(bta, 0, bta.Length);
stream.Flush();
control = false;
Client.Close();
statusBarPanel1.Text = " 与主机" textBox1.Text " 端口"
textBox2.Text "断开连接!";
comboBox1.Items.Clear();
button1.Enabled = true;
button2.Enabled = false;
button3.Enabled = false;
}
catch
{
MessageBox.Show("连接未能断开!");
}
}
private void button2_Click(object sender, System.EventArgs e)
{
CloseConnection();
}
private void button3_Click(object sender, System.EventArgs e)
{
if (comboBox1.Text == "")
{
MessageBox.Show("请选择信息接收者");
return;
}
try
{
string msg = ">>>" textBox3.Text "," comboBox1.Text ":"
richTextBox1.Text "\r\n"; //发送消息头部指定接受者
Byte[] bta = System.Text.Encoding.Default.GetBytes(msg.ToCharArray());
stream.Write(bta, 0, bta.Length);
stream.Flush();
}
catch
{
MessageBox.Show("信息无法正确发送!");
}
}
}
}