同步TCP客户端
来源:互联网 发布:淘宝售后技巧 编辑:程序博客网 时间:2024/06/06 05:52
同步TCP客户端
1:声明TcpClient链接
2:声明网络数据流(NetworkStream)
3:实例化IP终结点(IPEndPoint)
4:实例化客户端(TcpClient)
5:发起TCP链接(链接3和4,Connect)
6:获取绑定的数据流(链接2和4,ns = myTcpClient.GetStream();)
7:需要发送的消息传入数据流(ns.Write(sendData,0,sendData.Length);)
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;
namespace _003_同步TCP客户端
{
public partial class frmMain : Form
{
private delegate void ShowReceiveMsgCallBack(string text);
private ShowReceiveMsgCallBack showReceiveMsgCallBack;
private delegate void SetProgressBarCallBack();
private SetProgressBarCallBack setProgressBarCallBack;
private TcpClient myTcpClient;
private NetworkStream ns;//网络数据流
private Thread ReceiveMsgThread;
public frmMain()
{
InitializeComponent();
}
private void label3_Click(object sender, EventArgs e)
{
}
//窗体启动加载事件
private void frmMain_Load(object sender, EventArgs e)
{
showReceiveMsgCallBack = new ShowReceiveMsgCallBack(AddMsgToList);
setProgressBarCallBack = new SetProgressBarCallBack(SetProgressBarValue);
}
//建立连接按钮
private void btnConnect_Click(object sender, EventArgs e)
{
//创建并实例化IP终结点
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse(txtServerIP.Text), Convert.ToInt16(txtServerPort.Text));
//实例化TCP客户端
myTcpClient = new TcpClient();
try
{
//发起tcp链接
myTcpClient.Connect(ipEndPoint);
//获取绑定的数据流
ns = myTcpClient.GetStream();
ReceiveMsgThread = new Thread(ReceiveMsg);
ReceiveMsgThread.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//接受消息线程
private void ReceiveMsg()
{
while (true)
{
try
{ //获取数据
byte[] getData=new byte[1024];
ns.Read(getData,0,getData.Length);
//转换为字符串形式
string msg = Encoding.Default.GetString(getData);
//将收到的消息添加到列表回调
IstReceiveMsg.Invoke(showReceiveMsgCallBack,msg);
//修改进度条的值
pgProgressBar.Invoke(setProgressBarCallBack);
}
catch(ThreadAbortException){}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
//释放相关资源
if (ns != null)
{
ns.Dispose();
break;
}
}
}
}
private void AddMsgToList(string text)
{
IstReceiveMsg.Items.Add(text);
}
//修改进度条值得被委托的方法
private void SetProgressBarValue()
{
if (pgProgressBar.Value < pgProgressBar.Maximum)
{ pgProgressBar.Value++; }
else{
pgProgressBar.Value = 0;
}
}
private void btnSendMsg_Click(object sender, EventArgs e)
{
byte[] sendData;
sendData = Encoding.Default.GetBytes(txtSendMsg.Text);
ns.Write(sendData,0,sendData.Length);
}
private void btndisConnect_Click(object sender, EventArgs e)
{
//销毁tcp客户端和网络数据流的事例
myTcpClient.Close();
ns.Dispose();
ReceiveMsgThread.Abort();
}
}
}
- C# TCP同步客户端
- 同步TCP客户端
- boost TCP 同步IO客户端 示例演示
- linux--------net- tcp----------客户端和服务器端 同步互相收发消息
- 代码篇C#网络编程之tcp同步客户端
- C#学习笔记-socket通信(同步,客户端+服务器,TCP)
- TCP客户端
- tcp客户端
- TCP客户端
- TCP客户端
- TCP客户端
- TCP 客户端
- TCP客户端
- TCP UDP 同步数据
- TCP全局同步问题
- 11.3 TCP内核同步
- 服务器/客户端时间同步
- 网络游戏客户端同步方法
- MySQL入门常用命令
- 2、spring-boot 工程配置——配置文件详解:自定义属性、随机数、多环境配置等
- JavaScript自定义事件及dom无关事件
- JavaScript_代码规范
- Java实现二分查找法
- 同步TCP客户端
- Linux(Ubuntu)下MySQL的安装与配置
- ECS_8080端口连接拒绝问题排查
- fiddler post请求
- C++/MFC-线程优先级
- 【Linux网络编程】基于TCP多进程(fork)版本客户端/服务器
- 欢迎使用CSDN-markdown编辑器
- NYOJ60 谁获得了最高奖学金
- js引用公用头部底部