C# Socket 发送&接收&返回 简单应用实例
好久没有写过博客了,最近因项目需求,需要用到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 发送&接收&返回 简单应用实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
栏 目:C#教程
下一篇:C# 实现对PPT文档加密、解密及重置密码的操作方法
本文标题:C# Socket 发送&接收&返回 简单应用实例
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/5398.html
您可能感兴趣的文章
- 01-10C#中Socket通信用法实例详解
- 01-10C#编程实现发送邮件的方法(可添加附件)
- 01-10C#怎么实现手机短信发送功能
- 01-10C#实现的自定义邮件发送类完整实例(支持多人多附件)
- 01-10使用C#编写简单的图形化的可发送附件的邮件客户端程序
- 01-10使用C#发送带附件的电子邮件的方法的代码示例分析
- 01-10C#常见的几种集合 ArrayList,Hashtable,List<T>,
- 01-10C#使用Protocol Buffer(ProtoBuf)进行Unity中的Socket通信
- 01-10C# 如何获取出错的错误所在行数信息 <font color=red>原创
- 01-10C#向无窗口的进程发送消息
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-10SublimeText编译C开发环境设置
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-11ajax实现页面的局部加载
- 01-10C#中split用法实例总结
- 08-05DEDE织梦data目录下的sessions文件夹有什