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 发送&接收&返回 简单应用实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。