socket的初入门(一)
先说下服务端吧如下
private static void Service() { int revc = 0; byte[] mess = new byte[9999]; IPEndPoint oIPEndPoint = new IPEndPoint(IPAddress.Any, 9999); Socket oSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); oSocket.Bind(oIPEndPoint);//开始监听的服务端IP oSocket.Listen(100);//挂起的列队长度 Console.WriteLine("等待客户端介入...."); Socket oSocketClient = oSocket.Accept();//当有客户端连接的时候返回一个新的socket给他使用通信 IPEndPoint oIPEndPointClient = (IPEndPoint)oSocketClient.RemoteEndPoint;//获取服务器的IP和端口 Console.WriteLine("客户端:"+oIPEndPointClient.Address+"端口:"+oIPEndPointClient.Port+"进入服务器"); string strWelcome = "欢迎进入"; mess = Encoding.UTF8.GetBytes(strWelcome); oSocketClient.Send(mess,mess.Length,SocketFlags.None);//发送消息 while (true) { try { mess = new byte[1024]; revc = oSocketClient.Receive(mess); if (revc == 0) { break; } Console.WriteLine(Encoding.UTF8.GetString(mess, 0, revc)); oSocketClient.Send(mess, revc, SocketFlags.None); } catch (Exception) { break; } } Console.WriteLine("断开连接:"+oIPEndPointClient.Address); oSocketClient.Close(); oSocket.Close(); Console.ReadLine(); }
然后是客户端
private static void Client() { byte[] data = new byte[9999]; Socket oSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Console.WriteLine("请输入服务端IP"); string strIP = Console.ReadLine(); Console.WriteLine("请输入端口"); int iPost = Convert.ToInt32(Console.ReadLine()); IPEndPoint oIPEndPoint = new IPEndPoint(IPAddress.Parse(strIP), 9999); try { oSocket.Connect(oIPEndPoint); } catch (Exception ex) { Console.WriteLine("无法连接服务器,错误原因:"+ex.Message); return; } int revc = oSocket.Receive(data); Console.WriteLine(Encoding.UTF8.GetString(data, 0, revc)); while (true) { oSocket.Send(Encoding.UTF8.GetBytes(Console.ReadLine())); data = new byte[9999]; oSocket.Shutdown(SocketShutdown.Both); } oSocket.Close(); Console.ReadLine(); }
现在问题是客户端点X关闭之后服务端就异常了,异常原因是因为服务端在死循环去获取客户端的信息,客户端突然消失了让服务端爆发了异常。没想到如何解决,找百度大神看看有资料没。
作者:小胖李
出处:http://www.cnblogs.com/minCS/
本文版权归作者和博客园共有,禁止转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
![](http://service.t.sina.com.cn/widget/qmd/1044966201/d5b79a5b/1.png)
依旧牛逼依旧狂依旧是个小流氓