当前位置: 移动技术网 > IT编程>开发语言>c# > C# Socket 发送&接收&返回 简单应用实例

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

2019年07月18日  | 移动技术网IT编程  | 我要评论
好久没有写过博客了,最近因项目需求,需要用到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 发送&接收&返回 简单应用实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网