记录|Stock编程
创始人
2024-12-14 06:08:12

目录

  • 前言
  • 一、Stock编程?
  • 二、聊天工具开发
    • 1. 目的
    • 2. 服务器端开启对端口的监听
    • 3. VS创建服务器端Service
      • Step1. 创建
      • Step2. Listener对象监听事件
      • Step1~2效果展示
    • 4. 创建客户端,与服务器端链接
    • 5. VS创建客户端Client
      • Step1. 创建
      • Step2. Client对象
      • Step1~2的效果展示
        • 链接成功效果:
        • 链接失败效果:
      • 额外补充
    • 6. 传输文字【待更新。。。
  • 更新时间


前言

参考视频:
C#之Socket编程 | 简单聊天工具 | 全集完

为最终的界面化,增删改成做铺垫


一、Stock编程?

  • 通过编写程序实现电脑间的通讯。【例如,用TCP/UDP等协议进行通讯】

二、聊天工具开发

1. 目的

期望:实现两台电脑之间的即时聊天。
具体:一台电脑的客户端做为服务器端,另一台电脑做为客户端。
服务器端开启端口,监听其他电脑对这个端口的请求。一旦发现有电脑接入,就建立连接。

2. 服务器端开启对端口的监听

  • 创建一个服务器端的程序,程序开启端口,然后监听
  • 创建一个名为:TalkService的命令行程序
  • 在Main方法里,创建一个IPAddress,然后开启一个TcpListener监听,执行Start()方法进行监听。

3. VS创建服务器端Service

Step1. 创建

  • 创建C#窗口文件,命名为:Service
  • 布置Form1的前端界面【如下图示:】、
    在这里插入图片描述

Step2. Listener对象监听事件

  • 功能:点击“启动”按钮,触发点击事件。点击事件中触发监听事件。并将监听到的信息返回到信息界面中。
  • txtBoxPort:端口输入框
  • txtBoxIP:IP地址输入框
  • txtBoxInof:信息界面
  • 下面是具体的代码:
        TcpListener listener;         IPAddress ip;          private void btnStart_Click(object sender, EventArgs e)         {             ip = IPAddress.Parse(txtBoxIP.Text);//创建IP             listener = new TcpListener(ip, Convert.ToInt32(txtBoxPort.Text));//创建TCP监听对象             listener.Start();//开始监听             txtBoxInfo.Text = "服务器启动"+DateTime.Now.ToShortDateString()+"\r\n"+txtBoxInfo.Text; ;         } 

Step1~2效果展示

在这里插入图片描述


4. 创建客户端,与服务器端链接

  • 创建一个Client的命令行项目
  • 创建一个TcpClient的TCP客户端
  • 去链接Connect(“192.168.20.30”, 9500)
  • 链接成功,就可以读取服务器的信息
  • tcpClient.Client.LoaclEndPoint
  • tcpClient.Client.RemoteEndPoint

5. VS创建客户端Client

Step1. 创建

  • 创建新的C#窗口应用,命名为:Client
  • 页面布局和Service先弄成一样,主要看“链接”按钮的触发事件
    在这里插入图片描述

Step2. Client对象

  • 实例化Client对象,启用Connect对服务器端进行链接
  • 链接的逻辑是:服务器端的监听和客户端的请求链接的IP地址和端口号要一致。
       TcpClient tcpClient;         private void btnConnect_Click(object sender, EventArgs e)        {            tcpClient = new TcpClient();//实例化客户端对象            try            {                tcpClient.Connect(txtBoxIP.Text, Convert.ToInt32(txtBoxPort.Text));//客户端和服务器端建立链接                txtBoxInfo.Text = "链接成功-" + DateTime.Now.ToShortDateString() + "\r\n" + txtBoxInfo.Text;            }            catch (Exception ex)            {                MessageBox.Show($"链接失败,{ex.Message}");            }        } 

Step1~2的效果展示

  • 注意:要先启动Service端,再去启动客户端Client
链接成功效果:

在这里插入图片描述

链接失败效果:
  • 如果Service没有启动,或者服务器端挂掉了,那么下面就会报错。
    在这里插入图片描述

额外补充

  Console.WriteLine("链接成功, 我方端口{ 0},服务器端口{ 1}", tcpClient.Client.LocalEndPoint, tcpClient.Client.RemoteEndPoint); 

客户端会自动分配一个端口,和服务器端的9500端口进行匹配链接。
客户端的端口是不需要程序分配的,这是因为每次都可能不一样。
服务器端的9500端口是可以和多个客户端连接的。


6. 传输文字【待更新。。。


更新时间

  • 2024.07.28:创建,传输文字部分由于时间太晚,明天学习并更新

相关内容

热门资讯

长光卫星8颗卫星今日出征 将于... 5月17日,长光卫星技术股份有限公司在吉林省航天信息产业园举行“文物01星”、“彩云光学01星”、“...
管网式七氟丙烷气体灭火装置厂家... 导语:管网式七氟丙烷气体灭火装置作为高效环保的消防设备,广泛应用于工业厂房、电力设施、档案馆等场景。...
让好故事更好抵达观众(人文茶座... 牛梦笛 打开手机,嫦娥奔月的故事在AI(人工智能)影像里重现;节气传说、上古神话,在小小屏幕间次第展...
蜂巢能源申请电池模组和电池包专... 国家知识产权局信息显示,蜂巢能源科技股份有限公司申请一项名为“电池模组和电池包”的专利,公开号CN1...
乐道做对了,也稳住了 “两年前,乐道品牌第一次和大家见面。那时候有人问:中国市场还需要一个新品牌吗?纯电品牌真的能活下来吗...