返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#简单聊天室雏形
  • 383
分享到

C#简单聊天室雏形

2024-04-02 19:04:59 383人浏览 八月长安
摘要

本文实例为大家分享了C#简单聊天室雏形的具体代码,供大家参考,具体内容如下 程序使用的控制台的黑窗口模拟程序,第一次涉及网络编程,写出来方便以后查阅,代码很简单首先是服务器端的代码:

本文实例为大家分享了C#简单聊天室雏形的具体代码,供大家参考,具体内容如下

程序使用的控制台的黑窗口模拟程序,第一次涉及网络编程,写出来方便以后查阅,代码很简单
首先是服务器端的代码:

public class ServerControl
    {
        private Socket serverSocket;
        public ServerControl()
        {
            serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.tcp);

        }
        public void Start()
        {
            serverSocket.Bind(new IPEndPoint(IPAddress.Any, 12312));  //设置接收任何ip
            serverSocket.Listen(10);  //最大挂起数
            Console.WriteLine("服务器启动成功");
        } 
    }

主程序:

static void Main(string[] args)
        {
            ServerControl server = new ServerControl();
            server.Start();
            Console.ReadKey();
        }

下面是客户端代码:

public class ClientControl
    {
        Socket clientSocket;
        public ClientControl()
        {
            clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        }
        public void Connect(string ip, int port)
        {
            clientSocket.Connect(ip, port);
            Console.WriteLine("连接服务器成功");
        }
    }

客户端的调用代码:

static void Main(string[] args)
        {
            ClientControl client = new ClientControl();
            client.Connect("127.0.0.1",12312);
            Console.ReadKey();
        }

此时客户端就可以顺利连接到服务器,下一步是在服务器上显示是谁连接到服务器了很简单只需要在服务器端加一个方法来检测:

 private void Accept()
        {
            //接收客户端方法,会挂起当前线程
            Socket client = serverSocket.Accept();
            IPEndPoint point = client.RemoteEndPoint as IPEndPoint;
            Console.WriteLine(point.Address + "[" + point.Port + "]连接成功");
            Accept();   //尾递归
        }

因为要在服务器启动就要去检测有没有连接到服务器的ip,所以需要在start方法中开辟一个新的线程来调用Accept方法

Thread threadAccept = new Thread(Accept);  //接收一个委托方法
            threadAccept.IsBackground = true;  //设置为后台线程
            threadAccept.Start();

下一步就是客户端要往服务器发送消息

客户端的ClientControl类代码:

public void Send(string msg)  
        {
           clientSocket.Send(Encoding.UTF8.GetBytes(msg));
        }

客户端主程序调用代码:

Console.WriteLine("请输入要发送的内容, 输入exit退出:");
            string msg = Console.ReadLine();
            while (msg != "exit")
            {
                client.Send(msg);
                msg = Console.ReadLine();
            }

下一步就是要在服务器接收客户端的输入内容

private void Receive(object obj)
        {
            Socket client = obj as Socket;

            IPEndPoint point = client.RemoteEndPoint as IPEndPoint;
            try   //防止客户端异常断开抛异常
            {
                byte[] msg = new byte[1024];
                int msglen = client.Receive(msg);
                Console.WriteLine(point.Address + "[" + point.Port + "]:" + Encoding.UTF8.GetString(msg, 0, msglen));            client.Send(Encoding.UTF8.GetBytes(Encoding.UTF8.GetString(msg, 0, msglen)));   //这个地方加了个小功能,就是客户端来一个消息 服务器给他发回去同样的,可以去掉
                Receive(client);   //尾递归
            }
            catch
            {
                Console.WriteLine(point.Address + "[" + point.Port + "]:" + "已经断开");
            }

这个方法执行同样会挂起线程,所以要开辟一个新的线程,因为这是接收客户端的消息,所以这个新线程要写在刚才写的Accept方法里面

Thread threadReceive = new Thread(Receive);
            threadReceive.IsBackground = true;
            threadReceive.Start(client);

附加:

刚才不是写了一个服务器接收到消息,会给客户端返回一个相同的消息,所以还要在客户端接收服务器的消息,方法和在服务器端接收大同小异

private void Receive()
        {
            try
            {
                byte[] msg = new byte[1024];
                int msglen = clientSocket.Receive(msg);
                Console.WriteLine("服务器说:" + Encoding.UTF8.GetString(msg));

                Receive();
            }
            catch
            {
                Console.WriteLine("服务器已经断开");
            } 
}

以为一连上就要去检测服务器有没有消息,所以开辟一个线程 写在客户端的 connect方法中

Thread threadReceive = new Thread(Receive);
            threadReceive.IsBackground = true;
            threadReceive.Start();

好了 ,一个最简单的聊天室就算写完了
想多人登陆 就在vs中找到客户端的debug文件夹 找到exe文件运行

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#简单聊天室雏形

本文链接: https://lsjlt.com/news/138852.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#简单聊天室雏形
    本文实例为大家分享了C#简单聊天室雏形的具体代码,供大家参考,具体内容如下 程序使用的控制台的黑窗口模拟程序,第一次涉及网络编程,写出来方便以后查阅,代码很简单首先是服务器端的代码:...
    99+
    2024-04-02
  • Node.js制作简单聊天室
    看了TCP的有关知识,写了个基于NET的聊天室。 var net = require('net'); var count = 0, users = {}; var server = net.c...
    99+
    2022-06-04
    聊天室 简单 Node
  • python简单的多人聊天室
    刚开始学习python,写了一个聊天室练练手。 Server.py import socket,select,thread; host=socket.gethostname() port=5963 addr=(host,port) ...
    99+
    2023-01-31
    聊天室 简单 python
  • C语言实现简单的聊天室功能
    用C语言实现简单的聊天室功能,供大家参考,具体内容如下 服务器端 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> ...
    99+
    2024-04-02
  • C#基于Socket实现简单聊天室功能
    因为这段时间在学习Socket,所以就试着写了一个简单的聊天室。主要分为服务器端和多个客户端。利用服务器端作数据中转站,实现消息群发。 1、服务器端有两个类: using Syste...
    99+
    2024-04-02
  • Node.js如何制作简单聊天室
    小编给大家分享一下Node.js如何制作简单聊天室,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!示例代码如下:var ...
    99+
    2024-04-02
  • Node.js怎么制作简单聊天室
    这篇“Node.js怎么制作简单聊天室”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js怎么制作简单聊天室”文章吧...
    99+
    2023-06-17
  • python3-001-多线程简单聊天室
            这次代码为python3编写,并且使用网络调试助手、与python3聊天室程序进行通信测试。1、先放干货代码,如下: 1 from socket import * 2 from threading import Th...
    99+
    2023-01-31
    多线程 聊天室 简单
  • JAVANIO实现简单聊天室功能
    本文实例为大家分享了JAVA NIO实现简单聊天室功能的具体代码,供大家参考,具体内容如下 服务端 初始化一个ServerSocketChannel,绑定端口,然后使用Selecto...
    99+
    2024-04-02
  • Node.js怎么实现简单聊天室
    这篇“Node.js怎么实现简单聊天室”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js怎么实现简单聊天室”文章吧...
    99+
    2023-07-04
  • C++ select模型简单聊天室的实现示例
    TIPS:以下使用CMake项目进行开发。关于何为CMake,链接:https://www.jb51.net/article/247089.htm 简单聊天室效果展示 简单聊天室服...
    99+
    2024-04-02
  • C#实现简易多人聊天室
    本文实例为大家分享了C#实现简易多人聊天室的具体代码,供大家参考,具体内容如下 只有一个群聊的功能 服务端 using System; using System.Collectio...
    99+
    2024-04-02
  • Android编写简单的聊天室应用
    最近写了一个简单的聊天室应用,可以发送表情,更改头像这些功能。主要技术点就是怎样把表情图片放到textview等Ui控件中展示。这里废话不多说,下面是效果图:  这...
    99+
    2022-06-06
    聊天室 Android
  • Java实现简单局域网聊天室
    本文实例为大家分享了Java实现简单局域网聊天室的具体代码,供大家参考,具体内容如下 Java 的Socket编程: 1、TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数...
    99+
    2024-04-02
  • Java实现简单的聊天室功能
    本文实例为大家分享了Java实现简单聊天室功能的具体代码,供大家参考,具体内容如下 一、客户端的创建 1.我们可以用Socket来创建客户端 public class Client...
    99+
    2024-04-02
  • c#基于WinForm的Socket实现简单的聊天室 IM
    目录1:什么是Socket2:客服端和服务端的通信简单流程3:服务端Code:4:客服端Code:5:测试效果:6:完整Code GitHUb下载路径 7:这个只是一个简单...
    99+
    2024-04-02
  • C++实现简易UDP网络聊天室
    本文实例为大家分享了C++实现简易UDP网络聊天室的具体代码,供大家参考,具体内容如下 工程名:NetSrv NetSrv.cpp //服务器端 #include<Wins...
    99+
    2024-04-02
  • ASP.net(C#)实现简易聊天室功能
    本文实例为大家分享了ASP.net(C#)实现简易聊天室功能的具体代码,供大家参考,具体内容如下 1.搭建框架 <html > <head>     <...
    99+
    2024-04-02
  • 基于websocket实现简单聊天室对话
    本文实例为大家分享了websocket实现简单聊天室对话的具体代码,供大家参考,具体内容如下 首先搭建一个node的环境,在app.js中写入以下代码 npm install s...
    99+
    2024-04-02
  • 微信小程序实现简单聊天室
    本文实例为大家分享了微信小程序实现简单聊天室的具体代码,供大家参考,具体内容如下 cha.js // pages/chat/chat.js // 获取小程序实例 let app ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作