c#使用TCP协议实现数据发送和接受

c#使用TCP协议实现数据发送和接受

使用TCP协议实现数据的发送和接受包括客户端和服务端两个部分;

1. 服务端代码如下所示:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;class Program
{static void Main(){// 设置服务器IP地址和端口号IPAddress ip = IPAddress.Parse("127.0.0.1");//写入实际的IP地址int port = 8888;// 创建TCP监听器TcpListener listener = new TcpListener(ip, port);listener.Start();Console.WriteLine("等待客户端连接...");// 接受客户端连接TcpClient client = listener.AcceptTcpClient();Console.WriteLine("客户端已连接");// 获取网络流NetworkStream stream = client.GetStream();// 读取客户端发送的数据byte[] buffer = new byte[1024];int bytesRead = stream.Read(buffer, 0, buffer.Length);string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);Console.WriteLine("接收到数据: " + dataReceived);// 向客户端发送数据string dataToSend = "Hello, Client!";byte[] dataBytes = Encoding.ASCII.GetBytes(dataToSend);stream.Write(dataBytes, 0, dataBytes.Length);Console.WriteLine("已发送数据: " + dataToSend);// 关闭连接stream.Close();client.Close();listener.Stop();}
}

2. 客户端代码:

    
using System;
using System.Net.Sockets;
using System.Text;class Program
{static void Main(){// 设置服务器IP地址和端口号string serverIP = "127.0.0.1";int serverPort = 8888;// 创建TCP客户端TcpClient client = new TcpClient();client.Connect(serverIP, serverPort);Console.WriteLine("已连接到服务器");// 获取网络流NetworkStream stream = client.GetStream();// 向服务器发送数据string dataToSend = "Hello, Server!";byte[] dataBytes = Encoding.ASCII.GetBytes(dataToSend);stream.Write(dataBytes, 0, dataBytes.Length);Console.WriteLine("已发送数据: " + dataToSend);// 读取服务器发送的数据byte[] buffer = new byte[1024];int bytesRead = stream.Read(buffer, 0, buffer.Length);string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);Console.WriteLine("接收到数据: " + dataReceived);// 关闭连接stream.Close();client.Close();}
}

总结:上述示例使用服务器端创建一个TCP监听器,等待客户端连接。当客户端连接后,服务器端从客户端接收数据,并向客户端发送数据。客户端则连接到服务器,向服务器发送数据,并接收服务器发送的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/811411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于双向长短期神经网络LSTM的负荷预测,gru神经网络的负荷预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 BILSTM神经网络 基于双向长短期神经网络LSTM的负荷预测,gru神经网络的负荷预测 完整代码: 基于双向长短期神经网络LSTM的负荷预测,gru神经网络的负荷预测资源-CSDN文库 https://download.csdn.net/download/abc991835105/8910…

fastjson2 简单使用案例

maven 引入 <dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.43</version> </dependency>直接使用 Account account new .... // java类对象 // 将java对象转化为 J…

CMD命令窗口提示文字乱码

我下面说的是日文版系统&#xff0c;中文版会有差异。 一般情况下是 Shiftjis 通常我是用sakura editor来写bat&#xff0c;但是运行后会在cmd窗口出现乱码 test.bat set HENSU这是一个变数 echo %HENSU% pause 执行后出现乱码 原因是不做设置时&#xff0c;command prom…

3.2.k8s搭建-kubeadm

目录 一、虚拟机准备 二、所有节点环境准备 1.所有节点做hosts解析 2.所有节点重新命名 3.所有节点安装docker 4.所有节点为docker做linux内核转发 5.所有节点配置docker 6.所有节点关闭swap分区 7.所有节点验证网卡硬件编号是否冲突 8.所有节点配置允许iptables桥接…

【Docker】docker快速安装部署fastdfs的镜像详细记录

部署nacos的docker镜像 第一步&#xff1a; 获取fastdfs镜像1、查看镜像列表2、创建本地映射文件夹 第二步&#xff1a;运行镜像1.使用docker镜像构建tracker服务2.使用docker镜像构建Storage服务3.Storage服务中默认安装了Nginx服务4.如果需要修改storage则配置则进到以下目录…

【LeetCode热题100】【二叉树】二叉树展开为链表

题目链接&#xff1a;114. 二叉树展开为链表 - 力扣&#xff08;LeetCode&#xff09; 就先序遍历的顺序&#xff0c;其实就是简单的深度遍历顺序&#xff0c;装进一个容器里面再前一个后一个串连起来&#xff0c;注意容器的size是个无符号数&#xff0c;无符号数和有符号运行…

Vue.nextTick() 实现原理

Vue.nextTick() 实现原理 由于 Vue 的异步更新机制&#xff0c;当我们修改数据后立即获取DOM&#xff0c;获取到的是数据修改之前的DOM&#xff0c;如果想要获取数据更新后的 DOM&#xff0c;就需要使用Vue.nextTick() 方法 实现原理 Vue.nextTick() 方法的实现原理是基于浏览器…

【Linux】编写并运行Shell脚本程序操作实例

关于Shell脚本的介绍&#xff1a; Shell脚本是一种用于自动化任务和简化常见操作的脚本语言&#xff0c;通常用于Linux和Unix环境中。Shell脚本允许用户通过编写一系列命令和逻辑语句来执行一系列任务&#xff0c;从而提高了工作效率和自动化水平。 以下是关于Shell脚本的详细…

VUE3组合式API

create-vue create-vue是Vue官方新的脚手架工具&#xff0c;底层切换到了vite,为开发提供极速相应 使用create-vue 1.安装16.0或者更高版本的Node.js 2.npm init vuelatest指令会安装并执行create-vue 项目目录和关键文件 组合式API Vue 3引入了组合式API&#xff08;Com…

【Super数据结构】二叉搜索树与二叉树的非递归遍历(含前/中/后序)

&#x1f3e0;关于此专栏&#xff1a;Super数据结构专栏将使用C/C语言介绍顺序表、链表、栈、队列等数据结构&#xff0c;每篇博文会使用尽可能多的代码片段图片的方式。 &#x1f6aa;归属专栏&#xff1a;Super数据结构 &#x1f3af;每日努力一点点&#xff0c;技术累计看得…

《Sky光遇》无视steam锁区的两种下载入库游玩教程(图文一览)

玩家在光遇游戏中需要找到每一关的子民&#xff0c;然后穿过艰难险阻&#xff0c;最终在石碑前接受祝福&#xff0c;就是通过这一关了。玩家只有通关后会来到一个祭坛&#xff0c;从这个祭坛周围的门前往下一关或是回到遇境&#xff0c;通关就相当于是解锁地图场景&#xff0c;…

【Django开发】前后端分离美多商城项目第7篇:登录,使用登录的流程【附代码文档】

美多商城项目4.0文档完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;美多商城&#xff0c;项目准备1.B2B--企业对企业,2.C2C--个人对个人,3.B2C--企业对个人,4.C2B--个人对企业,5.O2O--线上到线下,6.F2C--工厂到个人。项目准备&#xff0c;配置1. 修改set…

C++——StackQueue

目录 一Stack 1介绍 2接口 3模拟实现 4栈的oj题 二Queue 1介绍 2接口 3模拟实现 三容器适配器 1再谈栈和队列 四优先级队列 1接口 ​编辑 2仿函数 五dequeue的简单介绍 一Stack 1介绍 先来看看库中对栈的介绍&#xff1a; 1. stack是一种容器适配器&#x…

Leetcode 150. 逆波兰表达式求值和Leetcode 55. 跳跃游戏

文章目录 Leetcode 150. 逆波兰表达式求值题目描述C语言题解和思路解题思路 Leetcode 55. 跳跃游戏题目描述C语言题解和思路解题思路 Leetcode 150. 逆波兰表达式求值 题目描述 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计…

开箱即用的 SpringBoot 企业级开发平台

项目概述 基于 Spring 实现的通用权限管理平台&#xff08;RBAC模式&#xff09;。整合最新技术高效快速开发&#xff0c;前后端分离模式&#xff0c;开箱即用。 核心模块包括&#xff1a;用户、角色、职位、组织机构、菜单、字典、日志、多应用管理、文件管理、定时任务等功能…

【AcWing】蓝桥杯集训每日一题Day32|贪心|1349.修理牛棚

1349.修理牛棚 1349. 修理牛棚 - AcWing题库难度&#xff1a;中等时/空限制&#xff1a;1s / 64MB总通过数&#xff1a;1275总尝试数&#xff1a;2405来源&#xff1a;usaco training 1.4算法标签贪心 题目内容 在一个下着暴风雨的夜晚&#xff0c;大风掀翻了农夫约翰的牛棚的…

鸿蒙TypeScript学习第13天:【元组】

1、TypeScript 元组 我们知道数组中元素的数据类型都一般是相同的&#xff08;any[] 类型的数组可以不同&#xff09;&#xff0c;如果存储的元素数据类型不同&#xff0c;则需要使用元组。参考文档&#xff1a;qr23.cn/AKFP8k 元组中允许存储不同类型的元素&#xff0c;元组…

代码随想录算法训练营day36

435_无重叠区间 题目&#xff1a; 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 示例 1: 输入: intervals [[1,2],[2,3],[3,4],[1,3]] 输出: 1 解释: 移除 [1,3] 后&…

手把手教你创建新的OpenHarmony 三方库

创建新的三方库 创建 OpenHarmony 三方库&#xff0c;建议使用 Deveco Studio&#xff0c;并添加 ohpm 工具的环境变量到 PATH 环境变量。 创建方法 1&#xff1a;IDE 界面创建 在现有应用工程中&#xff0c;新创建 Module&#xff0c;选择"Static Library"模板&a…

bash脚本中‘-b -u -p’‘$# -eq’‘#!/bin/bash’‘sed -i “s/\r//“ $1’的用法说明

#!/bin/bash#!/bin/bash: 这是 Bash 脚本的开头&#xff0c;指定了要使用的解释器&#xff0c;即 Bash。 if [ $# -eq 0 ]; thenif [ $# -eq 0 ]; then: 检查脚本是否被调用时提供了参数。$# 表示参数的数量&#xff0c;-eq 0 表示等于 0&#xff0c;即无参数。 echo "p…