欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > C# >内容正文

C#

C# 服务端监听客户端连接

发布时间:2024/3/24 C# 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C# 服务端监听客户端连接 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

需要建立两个工程:一个客户端、一个服务端

//服务端测试代码 using System; using System.Threading.Tasks; using System.Net; using System.Net.Sockets; using System.Collections; namespace SimpleServer {class Program{static void Main(string[] args){IpType();}private static void IpType(){//IP地址IPAddress ipaddr = IPAddress.Parse("127.0.0.1");IPEndPoint endPoint = new IPEndPoint(ipaddr, 33678);Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//绑定连接,一定要在监听之前socket.Bind(endPoint);//开始监听,最大支持同时5个连接socket.Listen(5);while(true){//如果未检测到连接,将阻塞,不再继续执行Socket clientSocket = socket.Accept();byte[] data = new byte[512];//第一次握手,接收到数据确认链接成功clientSocket.Receive(data, 0, data.Length, SocketFlags.Partial);string s = System.Text.Encoding.Default.GetString(data);Console.WriteLine(s.Split('\0')[0]);//启动新线程处理客户端的连接信息Task.Factory.StartNew(() =>{reciiveFromClient(clientSocket);});}}private static void reciiveFromClient(Socket client){byte[] data;try{while (true){//第二次握手,告诉客户端,服务端已准备好client.Send(System.Text.Encoding.Default.GetBytes("GoOn"));data = new byte[512];//第三次握手,接受数据client.Receive(data, SocketFlags.None);string str = System.Text.Encoding.Default.GetString(data);//创建队列Queue clientQ = new Queue();if (clientQ.Equals(data))//判断数据是否已在队列中,如果不在先添加进队列{}else{//往对列添加数据clientQ.Enqueue(data);}if (str.StartsWith("_quit")){//如果检测到_quit,关闭连接client.Close();Console.WriteLine("连接关闭");break;}else{//控制台打印数据string info = str.Split('\0')[0];Console.WriteLine("From Client :" + info);}}} catch(SocketException e){//处理异常}}} }//客户端测试代码 using System; using System.Net; using System.Net.Sockets; namespace SimpleClient {class Program{static void Main(string[] args){while(true){Client();//关闭连接后可提示继续连接Console.WriteLine("End Client");Console.WriteLine("是否继续?是[Y]/否[N]");string ss = Console.ReadLine();if(!(ss == "Y" || ss == "y")){break;}}}private static void Client(){//指定要连接的服务器IP,本机是127.0.0.1IPAddress ip = IPAddress.Parse("127.0.0.1");//端口号EndPoint ep = new IPEndPoint(ip, 33678);Socket client = new Socket(SocketType.Stream, ProtocolType.Tcp);//连接到指定主机client.Connect(ep);string s = "Hello, Server";byte[] data = System.Text.Encoding.Default.GetBytes(s);//第一次握手,告诉服务器我已经连接client.Send(data, SocketFlags.Partial);while (true){//第二次握手,确认服务端已准备好client.Receive(data);//第三次握手,从键盘读取数据string info = Console.ReadLine();//转换数据类型data = System.Text.Encoding.Default.GetBytes(info);//传输数据到服务器client.Send(data);if (info.StartsWith("_quit")){break;}}//关闭连接client.Close();}} }

转载于:https://my.oschina.net/CarrieLiu/blog/1576658

总结

以上是生活随笔为你收集整理的C# 服务端监听客户端连接的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。