C# Socket 发送&接收&返回 简单应用实例
作者:编编橙 时间:2022-09-18 20:08:20
好久没有写过博客了,最近因项目需求,需要用到Socket来进行通信,简单写了几个例子,记录一下,代码很简单,无非就是接收与发送,以及接收到数据后返回一个自定义信息,也可以定义为发送。
接收端因为需求要监听某个端口,则在一开始判断一下,要使用的端口是否被占用,定义一个处理方法,以下为处理代码:
public static bool PortIsUse(int port)
{
bool isUse = false;
IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();//找到已用端口
foreach (IPEndPoint endPoint in ipEndPoints)
{
if (endPoint.Port == port)//判断是否存在
{
isUse= true;
break;
}
}
return isUse;
}
定义接收端:
TcpListener tcpl = new TcpListener(new IPAddress(new byte[] { 127, 0, 0, 1 }), 1111);//定义一个TcpListener对象监听本地的1111端口
tcpl.Start();//监听开始
while (true)
{
Socket s = tcpl.AcceptSocket();//挂起一个Socket对象
string remote = s.RemoteEndPoint.ToString();//获取发送端的IP及端口转为String备用
Byte[] stream = new Byte[1024];
s.Receive(stream);//接收发送端发过来的数据,写入字节数组
//BGW_Handle.ReportProgress(1, "接收来自[" + remote + "]信息");
string _data = Encoding.UTF8.GetString(stream);//将字节数据数组转为String
s.Send(stream);//将接收到的内容,直接返回接收端
s.Shutdown(SocketShutdown.Both);
}
tcpl.Stop();//停止监听
定义发送端代码:
IPAddress ip = IPAddress.Parse("127.0.0.1");//接收端所在IP
IPEndPoint ipEnd = new IPEndPoint(ip, 1111);//接收端所监听的接口
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//初始化一个Socket对象
try
{
socket.Connect(ipEnd);//连接指定IP&端口
}
catch (SocketException e)
{
Console.WriteLine("连接失败");
Console.WriteLine(e.ToString());
return;
}
socket.Send(Encoding.UTF8.GetBytes("1234567890"));//发送数据
while (true)//定义一个循环接收返回数据
{
byte[] data = new byte[1024];
socket.Receive(data);//接收返回数据
string stringData = Encoding.UTF8.GetString(data);
if (!string.IsNullOrWhiteSpace(stringData))
{
Console.Write(stringData);
break;
}
}29 socket.Shutdown(SocketShutdown.Both);
socket.Close();//关闭Socket
从上面代码来看,还是很简单的,这也要归功于微软所做的工作,以上代码若有错误之处可在评论里提出来。
这篇C# Socket 发送&接收&返回 简单应用实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:http://www.cnblogs.com/lvlinlv/archive/2017/11/22/7880385.html
标签:socket,发送,接收,返回,C#
0
投稿
猜你喜欢
Android开发中匿名设备标识符OAID使用及初始化
2023-12-23 04:33:54
RocketMQ事务消息保证消息的可靠性和一致性
2022-09-05 00:25:26
Java8新特性之JavaFX 8_动力节点Java学院整理
2023-03-26 02:31:28
五分钟手撸一个Spring容器(萌芽版)
2021-07-29 02:41:54
完美解决Android App启动页有白屏闪过的问题
2021-11-18 02:12:31
Mybatis注解实现多数据源读写分离详解
2021-12-15 21:44:16
c#唯一值渲染实例代码
2023-09-06 06:54:16
java中lambda表达式简单用例
2023-11-24 23:17:52
Swift编程中的泛型解析
2022-04-19 05:37:24
Java实战之王者荣耀的英雄是怎么产生的?
2021-08-25 12:35:49
Android入门之TabHost与TabWidget实例解析
2022-12-07 23:03:42
浅析C#中数组,ArrayList与List对象的区别
2022-03-12 00:41:30
Java多线程之线程通信生产者消费者模式及等待唤醒机制代码详解
2022-10-31 11:17:22
android实现简单左滑删除控件
2023-11-10 03:01:29
Java通过PropertyDescriptor反射调用set和get方法
2023-10-11 19:34:17
C#实现12306自动登录的方法
2023-11-07 13:20:27
C#操作XML文件实例汇总
2023-03-26 03:55:08
C#之WinForm跨线程访问控件实例
2023-11-20 19:05:13
Java IO流相关知识代码解析
2023-08-05 05:48:04
Spring零基础入门WebFlux响应式编程
2022-07-12 07:25:53