TcpClientTest

news/2025/2/8 14:17:01 标签: c#

ClientTest:

using System;
using System.Net.Sockets;
using System.Text;



class TcpClientTest
{
    static void Main(string[] args)
    {
        try
        {
            // 创建一个TcpClient实例并连接到服务器  
            TcpClient client = new TcpClient("1vg5062570.51mypc.cn", 43319);
            //1vg5062570.51mypc.cn:43319
            // 获取一个NetworkStream对象以进行读写  
            NetworkStream stream = client.GetStream();

            // 将消息转换为字节数组  
            string message = "Hello from the client!";
            byte[] data = Encoding.ASCII.GetBytes(message);

            // 发送消息到服务器  
            stream.Write(data, 0, data.Length);

            // 读取服务器的响应  
            byte[] buffer = new byte[4096];
            int bytesRead = stream.Read(buffer, 0, buffer.Length);

            // 将接收到的字节转换为字符串  
            string responseData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
            Console.WriteLine("Received from server: " + responseData);

            // 关闭连接  
            client.Close();
        }
        catch (Exception e)
        {
            Console.WriteLine("Error: " + e.Message);
        }

        // 等待用户按键,以便在控制台中查看结果  
        Console.WriteLine("Press Enter to continue...");
        Console.ReadLine();
    }
}

ClientTestV3:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.IO;

public class IPport
{
    public string IP { get; set; }
    public int Port { get; set; }
}

namespace ClientTestV3
{
    internal class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string jsonFilePath = "ipport.json"; // 替换为你的JSON文件路径  

                // 读取文件内容  
                string jsonContent = File.ReadAllText(jsonFilePath);

                // 反序列化JSON字符串到对象  
                IPport ipaddr = JsonConvert.DeserializeObject<IPport>(jsonContent);

                // 输出结果  
                Console.WriteLine($"{ipaddr.IP}:{ipaddr.Port}");

                // 创建一个TcpClient实例并连接到服务器  
                TcpClient client = new TcpClient($"{ipaddr.IP}", ipaddr.Port);

                // 获取一个NetworkStream对象以进行读写  
                NetworkStream stream = client.GetStream();


                // 将消息转换为字节数组  
                string message = "Hello from the client!";
                Random rand = new Random();
                message += rand.Next().ToString();
                byte[] data = Encoding.ASCII.GetBytes(message);

                // 发送消息到服务器  
                stream.Write(data, 0, data.Length);

                // 读取服务器的响应  
                byte[] buffer = new byte[4096];
                int bytesRead = stream.Read(buffer, 0, buffer.Length);

                // 将接收到的字节转换为字符串  
                string responseData = Encoding.ASCII.GetString(buffer, 0, bytesRead);
                Console.WriteLine("Received from server: " + responseData);
                Console.WriteLine("ReceivedBytes:{0}", bytesRead);
                // 关闭连接  
                client.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: " + e.Message);
            }

            // 等待用户按键,以便在控制台中查看结果  
            Console.WriteLine("Press Enter to continue...");
            Console.ReadLine();
        }
    }
}


http://www.niftyadmin.cn/n/5844948.html

相关文章

团餐订餐系统源码企业订餐小程序写字楼办公区团餐软件开发

市场前景 近年来&#xff0c;随着社会经济的发展和人们生活节奏的加快&#xff0c;团餐市场规模持续扩大&#xff0c;现已稳稳占据了整个餐饮市场三分之一左右的份额&#xff0c;成为了推动餐饮行业发展的重要力量。截至2023年&#xff0c;中国团餐行业市场规模达22350亿元&am…

kafka消费端之分区分配策略

文章目录 概述分区分配策略RangeAssignor分配策略RoundRobinAssignor分配策略StickyAssignor自定义分区分配策略 总结 概述 我们知道kafka的topic可以被分成多个分区&#xff0c;消费者在集群模式下消费时一个消费组内的每个消费者实例只能消费到一个分区的消息&#xff0c;那…

idea——IDEA2024版本创建Sping项目无法选择Java 8

目录 一、背景二、解决方式&#xff08;替换创建项目的源地址&#xff09; 一、背景 IDEA2024创建一个springboot的项目&#xff0c;本地安装的是1.8&#xff0c;但是在使用Spring Initializr创建项目时&#xff0c;发现版本只有17、21、23。 二、解决方式&#xff08;替换创…

sql批量更新和删除语句

1.更新一条数据 update om_sellorder set SOSTATUS2 where id 283d3eb87b134e1c993b70b018406285 2.更新多个数据为某一个特点值 string ID context.Request["ID"]; //需要替换‘,’逗号&#xff0c;不然识别不出ID数据这里注意 ‘ID’ 是一个逗号&#xff08;&a…

Oracle CDB自动处理表空间不足脚本

之前我曾经发过一个自动处理表空间的脚本&#xff0c;可以通过定时任务自动处理表空间不足的问题&#xff1b;但是之前那个脚本没有涵盖CDB模式下的PDB&#xff0c;这里将脚本做了一下更新&#xff0c;可以处理CDB模式下多PDB的表空间问题。 传统模式的脚本请参考这个链接 Or…

自定义v-model修饰符

文章目录 引言I Vue3.4 的用法解构 defineModel() 的返回值,在子组件中访问添加v-model修饰符基于修饰符选择性地调节值的读取和写入方式带参数的 v-model 修饰符II Vue3.4 之前的用法原理带参数的 v-model 修饰符例子引言 v-model 有一些内置的修饰符,例如 .trim,.number 和…

[ESP32:Vscode+PlatformIO]添加第三方库 开源库 与Arduino导入第三方库的区别

前言 PlatformIO与Arduino在添加第三方库方面的原理存在显著差异 在PlatformIO中&#xff0c;第三方库的使用是基于项目&#xff08;工程&#xff09;的。具体而言&#xff0c;只有当你为一个特定的项目添加了某个第三方库后&#xff0c;该项目才能使用该库。这些第三方库的文…

虚基类和虚继承

抽象类(有纯虚函数的类) / 虚基类 virtual&#xff1a; 1.修饰成员方法是虚函数 2.可以修饰继承方式&#xff0c;是虚继承。被虚继承的类&#xff0c;称作虚基类。 vfptr/vbptr vftable/vbtable 在Windows vs下会存在内存释放错误的问题&#xff0c;Linux g下自动修正。 命令…