Socket通信

关于Socket

Socket作为进程通信的机制,是处于网络层中的应用层,说白了就是两个程序间通信用的。

它的形式与电话插座类似,电话的通话双方相当于两个互相通信的程序,电话号相当于IP。

 

网络通信三要素

  • IP地址(网络上主机设备的唯一标识,识别一台唯一的主机)
  • 端口号(定位程序,确定两个通信的程序)

    有效端口:0~65535,其中0~1023由系统使用,称为公认端口,他们紧密绑定与一些服务。从1024~49151是一些松散的绑定于一些服务,需要注册的一些端口,称为注册端口,剩下的49152~65535为动态端口、私有端口,我们一般开发都是使用这一频段的端口.

  • 传输协议(用什么样的方式进行交互)

       常见协议:TCP(面向连接,提供可靠的服务),UDP(无连接,传输速度快),一般使用TCP。

服务端于客户端Socket通信流程

.NET下WPF学习之Socket通信

 

 重点记忆两个端的步骤:

服务端:                                                                                         客户端:

1、创建Socket对象(负责侦听)               1、创建Socket对象

2、绑定端口                         2、连接服务器端

3、开启侦听                         3、发送消息、接受消息

4、开始接受客户端连接(不断接收,涉及多线程)        4、停止连接

5、创建一个代理Socket对象(负责通信)                     5、关闭Socket对象

6、发送、接收消息

7、关闭Socket对象

实现代码

服务端XAML代码(客户端类似):

 1 <Window x:Class="SocketDemo.MainWindow"
 2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
 5         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 6         xmlns:local="clr-namespace:SocketDemo"
 7         mc:Ignorable="d"
 8         Title="MainWindow" Height="472.5" Width="605">
 9     <StackPanel>
10         <Canvas Margin="10,20" Height="30">
11             <Label Content="IP:" Height="30" Width="30"  FontSize="18" HorizontalContentAlignment="Center" Canvas.Left="8"/>
12             <TextBox x:Name="txtIp" Text="192.168.0.4" Height="30" Width="150" FontSize="20" HorizontalContentAlignment="Center" Canvas.Left="41" />
13             <Label Content="Port:" Height="30" Width="50" FontSize="18" HorizontalContentAlignment="Center" Canvas.Left="210"/>
14             <TextBox x:Name="txtPort" Text="45000"  Height="30" Width="150" FontSize="20" HorizontalContentAlignment="Center" Canvas.Left="263"  />
15             <Button x:Name="btnStartServer" Content="开启服务" Height="30" Width="100" Canvas.Left="460"/>
16         </Canvas>
17         <TextBox Name="txtLog" Height="300" AcceptsReturn="True" TextWrapping="Wrap"></TextBox>
18         <Canvas Margin="0,20" Height="30">
19             <TextBox x:Name="txtMsg" Height="30" Width="450" FontSize="20" HorizontalContentAlignment="Center" Canvas.Left="0" />
20             <Button x:Name="btnSendMsg" Content="发送消息" Height="30" Width="100" Canvas.Left="470" />
21         </Canvas>
22     </StackPanel>
23 </Window>
服务端XAML(客户端与服务端相似)

相关文章:

  • 2021-03-31
  • 2021-11-21
  • 2022-12-23
猜你喜欢
  • 2021-09-24
  • 2022-12-23
  • 2022-12-23
  • 2021-09-03
  • 2021-09-28
  • 2022-02-01
  • 2021-09-14
相关资源
相似解决方案