C# socket服务器
来源:互联网 发布:什么爽肤水比较好知乎 编辑:程序博客网 时间:2024/05/16 08:31
public class SocSever { private int port = 102; private IPAddress ip; private TcpListener tlsocket; private TcpClient tcsocket; private NetworkStream tcStream; private Thread listenTh; private System.Timers.Timer tickHart; public SocSever(string strIp,int nPort) { if (!IPAddress.TryParse(strIp, out ip)) { ip = Dns.GetHostAddresses(Dns.GetHostName())[0]; } if (nPort != 0) { port = nPort; } tickHart = new System.Timers.Timer(1000f); tickHart.AutoReset = true; tickHart.Enabled = false; tickHart.Elapsed += new System.Timers.ElapsedEventHandler(tickHart_Elapsed); tlsocket = new TcpListener(ip, port); listenTh = new Thread(new ThreadStart(StartListen)); listenTh.Start(); } private void StartListen() { tlsocket.Start(); while (true) { tcsocket = this.tlsocket.AcceptTcpClient(); tcStream = tcsocket.GetStream(); Thread clientThread = new Thread(new ThreadStart(HandleClient)); clientThread.Start(); } } private void HandleClient() { byte[] message = new byte[2048]; tickHart.Enabled = true; while (true) { int bytesRead = 0; try { bytesRead = tcStream.Read(message, 0, 2048); } catch (SystemException ex) { break; } if (bytesRead == 0) { break; } ASCIIEncoding encoder = new ASCIIEncoding(); Console.WriteLine(encoder.GetString(message, 0, bytesRead)); } tickHart.Enabled = false; tcsocket.Close(); tcsocket = null; } private void tickHart_Elapsed(object obj, System.Timers.ElapsedEventArgs ea) { try { byte[] byteArray = new byte[] { (byte)6 }; tcStream.Write(byteArray, 0, 1); tcStream.Flush(); } catch (System.Net.Sockets.SocketException ex) { tcsocket.Close(); } } public void WriteMsgToClient(string strxml) { try { ASCIIEncoding encoder = new ASCIIEncoding(); byte[] btStream = encoder.GetBytes(strxml); tcStream.Write(btStream, 0, btStream.Length); tcStream.Flush(); } catch(SocketException ex) { tcsocket.Close(); } } }
服务器:
SocSever ss = new SocSever("192.168.1.2",9999);
控制台客户端:
class Program { static void Main(string[] args) { TcpClient client = new TcpClient(); IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.102"), 102); Console.WriteLine("输入字符C开始..."); while (Console.ReadKey().Key == System.ConsoleKey.C) { Console.WriteLine(); client.Connect(serverEndPoint); NetworkStream clientStream = client.GetStream(); Thread clientThread = new Thread(new ParameterizedThreadStart(ReadSomething)); clientThread.Start(clientStream); while (true) { Console.WriteLine("输入要发送的信息"); ASCIIEncoding encoder = new ASCIIEncoding(); byte[] buffer = encoder.GetBytes(Console.ReadLine()); clientStream.Write(buffer, 0, buffer.Length); clientStream.Flush(); } } } static void ReadSomething(object clientstream) { NetworkStream nws = (NetworkStream)clientstream; byte[] message = new byte[2048]; while (true) { int bytesRead = 0; try { bytesRead = nws.Read(message, 0, 2048); } catch (SystemException ex) { break; } if (bytesRead == 0) { break; } ASCIIEncoding encoder = new ASCIIEncoding(); Console.WriteLine("服务器消息:"+encoder.GetString(message, 0, bytesRead)); } } }
- C# socket服务器
- C# Socket服务器通讯
- C# Socket实现Http WEB服务器
- C# Socket通信客户端类、服务器类
- C# | socket实现简单的web服务器
- c#异步Socket Tcp服务器实现
- C# socket服务器异步监听注意事项
- c# socket检测连接服务器连接
- C# 异步Socket (BeginXXXX)服务器代码
- C# Socket TCP通信,连接服务器
- c# Socket服务器整体架构概述
- C#简单的Socket服务器框架
- C# 异步TCP Socket聊天室(1服务器,N客户端)
- C# Socket简单例子(服务器与客户端通信)
- C# socket游戏编程(1服务器,多客户端)
- C# 异步TCP Socket聊天室(1服务器,N客户端)
- C# Socket简单例子(服务器与客户端通信)
- c# 与 erlang 服务器通讯(socket)记录
- Linux 输入(input)子系统架构分析
- 【笨木头Cocos2dx 038】战争迷雾效果 第01章_要探索,不要地图全开!
- HDU1506--Largest Rectangle in a Histogram
- Qt 中加载声音的方法
- Homebrew安装与使用
- C# socket服务器
- ZOJ 1904 Beavergnaw
- jsp界面乱码。
- 归并排序(合并排序)
- 第一次 4.9
- 记一次js调试经历,关于传入参数为value还是function
- Linux socket编程入门
- javascript正则表达式
- NSString截取字符串小结