C#使用Scoket实现服务器和客户端互发信息

2024-06-20 12:52

本文主要是介绍C#使用Scoket实现服务器和客户端互发信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

20240616

By wdhuag


目录

前言:

参考:

一、服务器端: 

1、服务器端口绑定:

2、服务器关闭:

二、客户端:

1、客户端连接:

2、客户端断开:

三、通讯:

1、接收信息:

2、发送信息:

四、问题:

五、源码:


前言:

如题,工作中用到了,做个小程序验证一下功能。


参考:

C#使用Socket发送和接收TCP数据示例_c#tcp通信获取对方port-CSDN博客

C#实现Socket_TCP/IP(客户端,服务器端通信)_c# - 获取tcp服务器端口的所有客户端-CSDN博客

c#实现最简单的socket通信(一对一)_c# socket tcp client一对一server-CSDN博客

C#中通过Socket实现一个简单的TCP\IP服务器和客户端的搭建_tcp 服务端 客户端制作c#-CSDN博客

C#服务端与多客户端进行Tcp通信_c# tcp server-CSDN博客

C#中Socket关闭 Close、Dispose、Shutdown、Disconnect - jshchg - 博客园 (cnblogs.com)

Socket的基本操作函数socket()、bind()、listen()、connect()、accept()、recv()、send()、select()、close()_socket函数和bind-CSDN博客


一、服务端: 

1、服务端 端口绑定:

private Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);string ip = 服务器IP地址;
int port = 服务器端口;
EndPoint _endPoint = new IPEndPoint(IPAddress.Parse(ip), port);
serverSocket.Bind(_endPoint);    //绑定端口
serverSocket.Listen(100);    //最大连接数

2、服务端关闭:

serverSocket.Shutdown(SocketShutdown.Both);
serverSocket.Close();
serverSocket.Dispose();    //不释放资源无法重新连接


二、客户端:

1、客户端连接:

private Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);string ip = 服务器ip地址;
int port = 服务器端口;
clientSocket.Connect(new IPEndPoint(IPAddress.Parse(ip), port));

2、客户端断开:

clientSocket.Disconnect(false);


三、通讯:

1、客户端接收信息:

byte[] data = new byte[1024];
int length = clientSocket.Receive(data);
string message = Encoding.UTF8.GetString(data, 0, length);

 

 2、服务端接收信息:

clientSocket = serverSocket.Accept();byte[] data = new byte[1024];
int length = clientSocket.Receive(data);
string message = Encoding.UTF8.GetString(data, 0, length);

3、发送信息:

string cmd = 信息;
clientSocket.Send(Encoding.UTF8.GetBytes(cmd));


四、问题:

1、服务器强行关闭Socket,clientSocket = serverSocket.Accept();这一段会报错。。。如何完美停止?

2、服务端接收需要用多线程,不然只能接收最后连接客户端的信息。


五、源码:

链接: 度盘
提取码:ihdp 


END

这篇关于C#使用Scoket实现服务器和客户端互发信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1078184

相关文章

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言并发之通知退出机制的实现

《Go语言并发之通知退出机制的实现》本文主要介绍了Go语言并发之通知退出机制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1、通知退出机制1.1 进程/main函数退出1.2 通过channel退出1.3 通过cont

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +