记录|Stock编程

avatar
作者
猴君
阅读量:0

目录


前言

参考视频:
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:创建,传输文字部分由于时间太晚,明天学习并更新

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!