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关闭之后服务端就异常了,异常原因是因为服务端在死循环去获取客户端的信息,客户端突然消失了让服务端爆发了异常。没想到如何解决,找百度大神看看有资料没。

posted @   皮卡丘\(≧▽≦)/  阅读(275)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示