tcpclient和tcplistener通信

2023-10-31

服务器和客户端的代码都在在vs中编写并运行的,功能上实现了一个客户端和服务器互发消息,如果哪位大神知道多个客户端怎么搞,请留个思路给我,感谢;

服务器的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace 简单通信tcpSever
{
    class Program
    {
        static TcpListener tcplistener;
        static TcpClient tcpclient;
        static void Main(string[] args)
        {
            tcplistener = new TcpListener(IPAddress.Parse("127.0.0.1"), 2333);
            tcplistener.Start();//开始侦听连接请求
            Console.WriteLine("服务器启动");
            tcpclient = tcplistener.AcceptTcpClient();//接收来自客户端的连接请求
             Console.WriteLine("有一个客户端连接上了");
             Thread mythread = new Thread(sendMessageToClient);//接收消息和发送消息都单独开一个线程
             mythread.Start();
             Thread youthread = new Thread(receiveMessageFromClient);
             youthread.Start();

        }
        //服务器向客户端发送消息
        static void sendMessageToClient()
        {
            while (true)
            {
                try
                {
                    string sendStr = Console.ReadLine();
                    byte[] mybyte = new byte[1024];
                    mybyte = Encoding.UTF8.GetBytes(sendStr);
                    NetworkStream netS = tcpclient.GetStream();
                    netS.Write(mybyte, 0, mybyte.Length);
                  //  netS.BeginWrite(mybyte,0,1024,AsyncCallback.Combine,);

                }
                catch
                {
                    break;
                }
            }
            tcpclient.Close();
        }
        //接收从客户端发来的消息
        static void receiveMessageFromClient()
        {
            while (true)
            {
                try
                {
                    NetworkStream ns = tcpclient.GetStream();
                    byte[]mybyte = new byte[1024];
                    ns.Read(mybyte,0,1024);
                    string receiveStr = Encoding.UTF8.GetString(mybyte);
                    Console.WriteLine("服务器从客户端接收的消息:"+receiveStr);
                }
                catch
                {
                    break;
                }
            }
            tcpclient.Close();
        }
    }
}

客户端的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace 简单通信tcpclient
{
    class Program
    {
        static TcpClient tcpclient;
        static void Main(string[] args)
        {
            tcpclient = new TcpClient();
            tcpclient.Connect("127.0.0.1",2333);
            Thread mythread = new Thread(sendMessageToSever); //接收消息和发送消息都单独开一个线程
            mythread.Start();
            Thread youthread = new Thread(receiveMessageFromSever);
            youthread.Start();
        }
        //客户端接收消息
        static  void receiveMessageFromSever()
        {
            while (true)
            {
                try
                {
                    NetworkStream ns = tcpclient.GetStream();
                    byte[] mybyte = new byte[1024];
                    ns.Read(mybyte, 0, mybyte.Length);
                    string receiveStr = Encoding.UTF8.GetString(mybyte);
                    Console.WriteLine("客户端接收来自服务器的消息:" + receiveStr);
                 }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    break;
                }
            }
            tcpclient.Close();
        }
        //客户端发送消息
        static void sendMessageToSever()
        {
            while (true)
            {
                try
                {
                    string sendStr = Console.ReadLine();
                    byte[] mybyte = new byte[1024];
                    mybyte = Encoding.UTF8.GetBytes(sendStr);
                    NetworkStream netS = tcpclient.GetStream();
                    netS.Write(mybyte, 0, mybyte.Length);

                }
                catch
                {
                    break;
                }
            }
            tcpclient.Close();
        }
    }
}

本人也是最近才开始研究socket通信,这是其中一种方法,以后再出直接使用socket编程的,如果有哪里写的不对或者代码不好的,欢迎交流一二;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tcpclient和tcplistener通信 的相关文章

  • 图解通信原理与案例分析-6:基于离散字符的RS232串口数字通信--收发双方独立预设置同步时钟

    前言 RS 232标准接口是计算机常用的串行通信接口标准之一 虽然比较简单与成熟 但对于理解通信原理的基本流程和框架 核心的概念有基础性帮助作用 本文将从通信原理的角度 解析RS232串口通信过程中的每个环节 包括硬件和软件 在信源和信宿之
  • 使用Chrony的Raspberry Pi

    chrony是网络时间协议 NTP 的实现 它替代了ntpd 后者是NTP 的参考实现 与NTPsec不同 chrony是从零开始实现的 它被设计为即使在诸如间歇性网络连接 例如笔记本电脑 和拥塞网络之类的困难条件下也可以同步时间 与ntp
  • 5G干货之概述

    我们都生活在4G网络时代 相信各位还记得当时各运营商推出4G技术时 天天催着我们去换卡的场景 现在需要告诉身为 普通老百姓 的你 5G也要悄然问世了 对于 对移动通信领域一无所知 的你 笔者这样给你介绍5G技术是什么 5G 好高端啊 那只是
  • 【Socket】Java Socket编程基础及深入讲解

    转自 https www cnblogs com yiwangzhibujian p 7107785 html Socket是Java网络编程的基础 了解还是有好处的 这篇文章主要讲解Socket的基础编程 Socket用在哪呢 主要用在进
  • 移动端安全通信的利器——端到端加密(E2EE)技术详解

    前言 端到端加密允许数据在从源点到终点的传输过程中始终以密文形式存在 采用端到端加密 又称脱线加密或包加密 时消息在被传输时到达终点之前不进行解密 因为消息在整个传输过程中均受到保护 所以即使有节点被损坏也不会使消息泄露 端到端加密系统与链
  • 即时通讯IM技术领域基础篇

    转自 https juejin im post 5a694f216fb9a01cb74e8f74 即时通讯IM技术领域基础篇 即时通讯IM技术领域提高篇 议题 准备工作 协议选型 网络传输协议选择 和 数据通信协议选择 xxx项目架构 架构
  • 优化理论

    版权声明 原创作品 整理不易 转载请标明出处 本篇推送更详细的内容介绍 可参见本人微信公众号 优化与博弈的数学原理 公众号二维码参见文末 或参见以下网址 优化理论 Time Sharing Condition 编者按 OFDM系统中的功率分
  • MFC实现socket网络通信--主机与服务器之间传送数据

    MFC实现socket网络通信 模拟主机与服务器之间传送数据 MFC实现socket网络通信 1 新建MFC应用程序 2 创建服务端窗口界面 3 写服务器代码 4 创建客户端窗口界面 5 客户端代码部分 6 开始调试 7 小结 MFC实现s
  • QTcpSocket 发送数据心得

    遇到不会用的函数前 最好还是看看手册QAQ 今天居然吃了这个大亏 先交代一下背景 在做TCP客户端的发送数据功能 要和服务器程序进行TCP IP通信 且根据通信协议要发送数组或者结构体 并且数组的每一个位都是有效数据位 因此不能像大多数人一
  • 如何与西门子200 PLC建立连接

    更多关于西门子S7 200PLC内容请查看 西门子200系列PLC学习课程大纲 与西门子200 PLC建立连接很简单 分为以下几步 1 给S7 200PLC通电 按下图1 1所示连接PLC端口 然后给PLC供电 有直流24V和交流220V两
  • RS485、MODBUS通信协议浅显易懂篇

    前言 MODBUS协议是Modicon公司发表的一种串行通信协议 属于OSI模型中应用层的协议 现广泛应用于工业控制领域 它的主要特点是免费开放 支持多种电气接口 如RS 232 RS 485 传输介质可以是双绞线 光纤 无线等 RS485
  • HTTP协议中的短轮询、长轮询、长连接和短连接

    转自 https www cnblogs com Leo wl p 5397265 html 阅读目录 一 引言 二 以前的误解 三 一个疑问 四 长轮询和短轮询 五 长短轮询和长短连接的区别 六 结语 阅读目录 HTTP协议中的短轮询 长
  • 蓝牙协议栈实现模式分析

    蓝牙协议栈实现模式分析 广州大学信息与机电工程学院 510405 邹艳碧 广州大学理学院 510405 吴智量 广州大学信息与机电工程学院 510405 李朝晖 摘要 蓝牙技术是未耒无线通信的一个重要的研究方向 本文主要介绍了蓝牙 技术的体
  • SSL工作原理

    转自 https www wosign com Basic howsslwork htm SSL 是一个安全协议 它提供使用 TCP IP 的通信应用程序间的隐私与完整性 因特网的 超文本传输协议 HTTP 使用 SSL 来实现安全的通信
  • http和Tcp的长连接和短连接

    转自 https www cnblogs com fubaizhaizhuren p 7523374 html http协议和tcp ip 协议的关系 1 http是应用层协议 tcp协议是传输层协议 ip协议是网络协议 2 IP协议主要解
  • 基于TCP的socket通信

    本文转载自http blog csdn net chocolate001 article details 6612201 基于TCP 面向连接 的socket编程 分为客户端和服务器端 客户端的流程如下 1 创建套接字 socket 2 向
  • [技术发展-28]:信息通信网大全、新的技术形态、信息通信行业高质量发展概览

    目录 前言 第1章 什么是信息与通信 第2章 为啥要编制信息与通信发展规划 第3章 信息与通信如何高质量发展 重点 3 0 发展目标 编辑 3 1 建设新型数字基础设施 3 1 1 移动通信网 无线接入层 1G到5G 3 1 2 固定宽带网
  • 低功耗蓝牙(BLE)你入门了吗

    前言 蓝牙低功耗 Bluetooth Low Energy 或称Bluetooth LE BLE 旧商标Bluetooth Smart 用于医疗保健 运动健身 安防 工业控制 家庭娱乐等领域 在如今的物联网时代下大放异彩 扮演者重要一环 是
  • C/C++语言实现WiFi(socket)数据收发(客户端和服务端)

    目录 客户端 client 服务端 server C C 实现TCP通信 接收WIFI数据 编程环境 VC 6 0 手机端 使用WiFi调试助手 提示 整个过程在局域网中进行 很多编程语言都可以实现socket通信 本博客将通过C C 实现
  • 分布式系统详解--基础知识(通信)

    分布式系统详解 基础知识 通信 上一篇文章我们写到了 分布式系统详解 基础知识 线程 简单了解了一下线程的基本概念和线程和分布式的那斩不断理还乱的关系 今天再讲解一下它的另外一个必备知识 通信 进程之间进行通信是分布式的核心 失去了通信 也

随机推荐

  • jsunix时间戳转换成时间

    jsunix时间戳转换成时间 js实现unix时间戳转换代码教程如下 输入一个时间 实现结果 转换成时间戳 js实现代码如下 act 鏃堕棿鎴宠浆鎹 version 1 1 author youngxj date 2018 07 01 ur
  • 训练---递归与递推

    文章目录 一 递归实现指数型枚举 递归 二 递归实现排列型枚举 递归 三 简单斐波那契 四 费解的开关 五 递归实现组合型枚举 六 带分数 七 飞行员兄弟 七 翻硬币 一 递归实现指数型枚举 递归 任意门 include
  • C语言输入输出函数printf与scanf的用法格式

    转自 微点阅读 https www weidianyuedu com content 4617732110906 html c语言输入输出函数printf与scanf的用法格式 printf 函数用来向标准输出设备 屏幕 写数据 scanf
  • 关于nginx服务关闭之后端口占用kill不掉的问题

    这里写自定义目录标题 首先介绍下当前环境 首先介绍下当前环境 nginx版本 1 21 6 linux版本 CentOS8 使用命令行 ps ef grep nginx 查询出当前 nginx进程 使用kill 9 进程号 来进行强制关闭n
  • Activiti和tk.mybatis的坑

    近期开发关于工作流的项目 遇到一个很坑的问题 activiti和tk mybatis居然会有冲突 先看异常 报错的原因大概就算这句话 Parameter 1 of method springProcessEngineConfiguratio
  • KubeVela 再升级:交付管理一体化的云原生应用平台

    11月3日 2022 杭州 云栖大会上 阿里云智能云原生应用平台总经理丁宇宣布 KubeVela 面向四大核心方向能力升级 打造交付管理一体化的云原生应用平台 本次升级是 KubeVela 从应用交付到应用管理不断量变形成的一次质变 同时也
  • 用python读写.mat文件——使用scipy库的scipy.io和h5py库

    python 中的scipy库和h5py库 1 读 mat文件 1 1 用scipy io读取 在用python处理matlab的mat文件时 发现数据量较小的文件可以直接通过scipy库的scipy io读取 import scipy i
  • linux 安装 yum etcd,安装etcd - Go语言中文网 - Golang中文社区

    etcd是一个golang编写的分布式 高可用的一致性键值存储系统 用于提供可靠的分布式键值 key value 存储 配置共享和服务发现等功能 etcd可以用于存储关键数据和实现分布式调度 在现代化的集群运行中能够起到关键性的作用 etc
  • VSCode官网无法下载

    因为不是国内的服务器 所以有可能无法下载或者下载失败 将下载地址https stable之间的部分更改为vscode cdn azure cn 重新复制地址下载就可以
  • 语音信号加噪频域分析与滤波处理(MATLAB GUI)

    语音信号加噪频域分析与滤波处理 MATLAB GUI 文章目录 语音信号加噪频域分析与滤波处理 MATLAB GUI GUI功能界面如图所示 部分代码展示 IIR高通滤波结果 IIR带通滤波结果 联系方式 email Jaceshuai j
  • python重复执行_python scrapy重复执行实现代码详解

    这篇文章主要介绍了python scrapy重复执行实现代码详解 文中通过示例代码介绍的非常详细 对大家的学习或者工作具有一定的参考学习价值 需要的朋友可以参考下 Scrapy是一个为了爬取网站数据 提取结构性数据而编写的应用框架 我们只需
  • windows使用rdp远程连接deepin

    deepin版本是截止目前最新的15 11 可以安装xrdp和x11vnc来使用windows可以远程连接 首先开启ssh sudo apt get install openssh server 开启服务 sudo systemctl st
  • 云计算 第七章 云安全(3)概述 云计算面临的安全问题 云安全问题的深层原因 云安全关键技术 云计算信息安全的国内外标准化

    关注公众号凡花花的小窝 收获更多的考研计算机专业编程相关的资料 加密与解密 目前 云服务提供商般采用密码学中的技 术来保证数据安全 常用技术之一就是对数招进1加8和联名密码技术不仅服务于信息的加密和解密 也是身份认证 访问控制和数排签名等多
  • 根据E-R图设计数据库表

    上图是一个E R图 一共有三个实体 司机 车辆 车队 并且这几个实体之间互相具有一定的联系 我们首先把所有实体的表写出来 数据类型的选择请参考文章 https blog csdn net qq 61659383 article detail
  • 最完整梳理:SSL证书的诞生和历史

    HTTPS加密已经成为主流的网络传输协议 但是 SSL证书的诞生和历史你了解吗 跟着本文一起了解一下SSL证书的进化史 SSL TLS协议进化史 SSL协议 Secure Sockets Layer 安全套接层 是一套网络通信安全协议 具有
  • Nginx(二十一)nginx配置python

    一 scgi wsgi uwsgi 1 scgi gt 了解 SCGI是一种 与语言无关 的连接 web服务器 和 web应用程序 的方法 2 wsgi gt 协议 wsgi 一种 实现python解析 的通用 接口标准 协议 实现了 py
  • nginx的简单介绍 什么是nginx,为什么使用nginx,nginx的优点

    一 什么是nginx 1 Nginx是一款轻量级的Web 服务器 反向代理服务器及电子邮件 IMAP POP3 代理服务器 在BSD like 协议下发行 其特点是占有内存少 并发能力强 事实上nginx的并发能力在同类型的网页服务器中表现
  • Java高级面试题解析(二):百度Java面试题前200页(精选)

    基本概念 操作系统中 heap 和 stack 的区别 heap是堆 stack是栈 是两种不同的数据结构 堆是队列优先 先进先出 栈是先进后出 在java多线程中 每个线程都有自己的栈 不同的线程共享一个堆 在java内存中 栈中存放的大
  • 国庆在家写了个简易版的在线简历网站

    一个可在线编辑的简历页面 放在github Page上托管 在线编辑 可生成PDF 从此跑路没烦恼 目录 一 GitHub Page托管简历 二 修改简历 三 简历下载 一 GitHub Page托管 1 页面样式 这个简历单纯页面技术含量
  • tcpclient和tcplistener通信

    服务器和客户端的代码都在在vs中编写并运行的 功能上实现了一个客户端和服务器互发消息 如果哪位大神知道多个客户端怎么搞 请留个思路给我 感谢 服务器的代码 using System using System Collections Gene