欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# Socket 发送&接收&返回 简单应用实例

程序员文章站 2023-12-15 08:08:28
好久没有写过博客了,最近因项目需求,需要用到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 发送&接收&返回 简单应用实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

上一篇:

下一篇: