首页 > 编程语言 >C#实现Socket客户端

C#实现Socket客户端

时间:2024-09-18 23:23:43浏览次数:7  
标签:tbox Socket C# IP System new using Message 客户端

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace socket_client
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Socket tcpClient;//实例Socket
        Thread thrClient;//实例一个线程
        private void btn_Connect_Click(object sender, EventArgs e)
        {
            //获取tbox_IP信息并转换为IP
           try
            {
                IPAddress IP = IPAddress.Parse(this.tbox_IP.Text.Trim());
                IPEndPoint IP_Port = new IPEndPoint(IP, int.Parse(tbox_Port.Text.ToString().Trim()));
                this.tbox_Message.AppendText("正在连接服务器中...."+Environment.NewLine);
                //初始化tcpClient
                tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                tcpClient.Connect(IP_Port);//开始连接
            }
            catch (Exception ex)
            {
                this.tbox_Message.AppendText("连接失败," + ex.Message + Environment.NewLine);
                return;
            }
            this.tbox_Message.AppendText("连接成功!" + Environment.NewLine);
            thrClient = new Thread(RcvMessage);//初始化线程
            thrClient.IsBackground = true;//配置为后台线程;
            thrClient.Start();//启动线程;

        }

        private void RcvMessage()
        {
            while (true)
            {
                byte[] abyRcv = new byte[1024 * 1024 * 2];
                int Length = tcpClient.Receive(abyRcv);
                if (Length == 0)//表示客户端已经断开了
                {
                    Invoke(new Action(() => this.tbox_Message.AppendText("断开连接" + Environment.NewLine)));
                }
                else
                {
                    //byte数组转换为string类型;
                    string strRcv = "接收:" + Encoding.UTF8.GetString(abyRcv, 0, Length) + "\r\n";
                    Invoke(new Action(() => this.tbox_Message.AppendText(strRcv)));
                }
            }

        }

        private void btn_Send_Click(object sender, EventArgs e)
        {
            try
            {
                //string类型转换为byte数组
                byte[] abySend = Encoding.UTF8.GetBytes(tbox_SendData.Text.Trim());
                tcpClient.Send(abySend); 
            }
            catch (Exception ee)
            {
                this.tbox_Message.AppendText(ee.ToString());
                return;
            }
            Invoke(new Action(() => this.tbox_Message.AppendText("发送:" + tbox_SendData.Text + "\r\n")));

        }
    }
}

 

标签:tbox,Socket,C#,IP,System,new,using,Message,客户端
From: https://www.cnblogs.com/csflyw/p/18419568

相关文章

  • BayesianLSTM PawaritL 使用PyTorch中的贝叶斯LSTM进行能源消耗预测,贝叶斯神经网络仅
    https://colab.research.google.com/github/PawaritL/BayesianLSTM/blob/master/Energy_Consumption_Predictions_with_Bayesian_LSTMs_in_PyTorch.ipynb#EnergyConsumptionPredictionswithBayesianLSTMsinPyTorchAuthor:PawaritLaosunthara内容:请点击上面的在Col......
  • 【Canvas与诗词】《登科后》唐.孟郊
    【成图】【代码】<!DOCTYPEhtml><htmllang="utf-8"><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><head><title>昔日龌龊不足夸</title><styletype="text/css"&......
  • python 深度神经网络训练,pytorch ,tensorflow paddle大模型训练中损失突然增大的原因
    在机器学习和深度学习的训练过程中,损失函数的数值突然变高可能是由多种因素引起的。以下是一些可能的原因和相应的解决方案:1.**学习率设置不当**:如果学习率过高,可能会导致模型在优化过程中跳过最小值,甚至导致模型发散。相反,如果学习率过低,则可能导致模型训练速度过慢,甚至停滞......
  • 【LTSpice】【软件安装】
    LTSpice安装教程文章目录LTSpice安装教程前言一、软件的下载二、软件安装三、快捷键设置总结前言由于笔者的LTspice是17.1.10版本,目前官方已经停止维护了,为了使得教程能够适配最新的软件版本,笔者决定重新下载并更新一下软件。一、软件的下载LTSpice的最新版......
  • 【LTspice】【LTM4630】【1.电压、电流和效率仿真】
    文章目录前言一、打开电路二、开始仿真三、检测电压和电流1.读取直流电压2.读取负载电流3.读取电源效率总结前言本篇学习使用LTSpice仿真观察LTM4630的样本电路,观察电压输出,电流输出和电源输出效率等指标。一、打开电路打开LTSpice软件后,Ctrl+N新建一个图纸。按......
  • Acunetix v24.8 - 29 Aug 2024 高级版漏洞扫描器(最新版) 附Windows/Linux下载链接
    前言AcunetixPremium是一种Web应用程序安全解决方案,用于管理多个网站、Web应用程序和API的安全。集成功能允许您自动化DevOps和问题管理基础架构。AcunetixPremium:全面的Web应用程序安全解决方案Web应用程序对于企业和组织与客户、合作伙伴和员工的联系至关......
  • Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码
    原文链接:https://tecdat.cn/?p=37724原文出处:拓端数据部落公众号 分析师:SikunChen在当今世界,粮食系统的稳定性至关重要。尽管现有的全球粮食系统在生产和分配方面表现出较高的效率,但仍存在大量人口遭受饥饿以及诸多粮食安全隐患。与此同时,在学术领域,准确评估情报学期刊的质......
  • Day 19 回溯法part01| LeetCode 77.组合,216. 组合总和 III,17. 电话号码的字母组合
    理论基础回溯法(回溯搜索法)回溯函数就是递归函数本质是穷举解决的问题组合问题(不强调元素顺序,需去重)切割问题子集问题:一个N个数的集合里有多少符合条件的子集排列问题(强调元素顺序)棋盘问题:N皇后回溯法模板(可抽象为树形结构——N叉树来解决问题)递归返回值以及......
  • C# udp通讯 多网卡/虚拟机指定某个网卡通讯
    LocalIP=GetAllAdaptersIPAddress();Task.Run(()=>{try{//接收广播UdpClientudpClient=newUdpClient(newIPEndPoint(IPAddress.Any,6789));while(true){IPEndPointAnyIP=newIPEndPoint(IPAddress.Any,0);byte[]data=udpClient.Receive(refAnyIP);......
  • LeetCode_0146. LRU缓存
    题目描述请你设计并实现一个满足LRU(最近最少使用)缓存约束的数据结构。实现LRUCache类:LRUCache(intcapacity)以正整数作为容量capacity初始化LRU缓存intget(intkey)如果关键字key存在于缓存中,则返回关键字的值,否则返回-1。voidput(intkey,intval......