1-网络通讯案例

在网络上两个程序需要一个双向通信连接实现数据交换,这个连接的一段称为一个socket。

socket包含了网络通信必须的五种信息:

{

  • 协议:TCP ————相当于通信的语言,是中文还是英文
  • 本地:IP、端口 ————相当于自己的手机号
  • 远程:IP、端口 ————相当于对方的手机号

}

可以通过ipconfig、netstat-ano查看IP和端口

创建socket之外的操作:

客户端

复制代码
 1 using System.Net.Sockets;
 2 using System.Text;
 3 
 4 namespace Client
 5 {
 6     internal class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
11             //
12             clientSocket.Connect("127.0.0.1",8888);
13             //
14             string  SendInfo= Console.ReadLine();
15             byte[] data=Encoding.UTF8.GetBytes(SendInfo);
16             clientSocket.Send(data);
17             //
18             byte[] readBuffer = new byte[1024];
19             pSocket.Receive(readBuffer);
20             string readStr=Encoding.UTF8.GetString(readBuffer);
21             Console.WriteLine("接收服务器发过来的消息"+readStr);
22             //
23             clientSocket.Close();
24         }
25     }
26 }
复制代码

服务器端

复制代码
 1 using System.Net;
 2 using System.Net.Sockets;
 3 using System.Text;
 4 
 5 namespace Server
 6 {
 7     internal class Program
 8     {
 9         static void Main(string[] args)
10         {
11             Socket serverSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
12             //绑IP
13             IPEndPoint iPEndPoint=new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
14             serverSocket.Bind(iPEndPoint);
15             //监听
16             serverSocket.Listen(1000);
17             Console.WriteLine("server Successful");
18             //同意、接纳
19             Socket connetClinet= serverSocket.Accept();//如果客户端connect连接成功之后,这个函数就会返回客户端的这个socket
20             Console.WriteLine("握手成功"+connetClinet);
21             //
22             byte[] readBuffer=new byte[1024];
23             connetClinet.Receive(readBuffer);
24             string readStr=Encoding.UTF8.GetString(readBuffer);
25             Console.WriteLine("转换接收到的消息:"+readStr);
26             //
27             string sendInfo=Console.ReadLine(); 
28             byte[] sendData=Encoding.UTF8.GetBytes(sendInfo);
29             connetClinet.Send(sendData);
30            
31             //捕捉异常
32             //
33             serverSocket.Close();
34         }
35     }
36 }                                   
复制代码

 封装后客户端

复制代码
 1 using System.Net.Sockets;
 2 using System.Text;
 3 
 4 namespace Client
 5 {
 6     internal class Program
 7     {
 8         static void Main(string[] args)
 9         {
10             Socket clientSocket = CreateSocket();
11             //1连
12             clientSocket.Connect("127.0.0.1",8888);
13             //2发
14             Send(clientSocket);
15             //3收
16             Receive(clientSocket);
17             //4关
18             Close(clientSocket);
19         }
20 
21         static Socket CreateSocket()
22         {
23             return new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
24         }
25         static void Send(Socket pSocket)
26         {
27             string SendInfo = Console.ReadLine();
28             byte[] data = Encoding.UTF8.GetBytes(SendInfo);
29             pSocket.Send(data);
30         }
31         static void Receive(Socket pSocket)
32         {
33             byte[] readBuffer = new byte[1024];
34             pSocket.Receive(readBuffer);
35             string readStr = Encoding.UTF8.GetString(readBuffer);
36             Console.WriteLine("接收服务器发过来的消息:" + readStr);
37         }
38         static void Close(Socket pSocket)
39         {
40             pSocket.Close();
41         }
42     }
43 }
复制代码

封装后服务器端

复制代码
 1 using System.Net;
 2 using System.Net.Sockets;
 3 using System.Text;
 4 
 5 namespace Server
 6 {
 7     internal class Program
 8     {
 9         static void Main(string[] args)
10         {
11             Socket serverSocket= CreateSocket();
12             //1绑IP
13             //2监听
14             BindAndListen(serverSocket);
15             //3同意、接纳
16             Accept(serverSocket);
17             //4收
18             Receive(serverSocket);
19             //5发
20             Send(serverSocket);
21             //捕捉异常
22             //
23             Close(serverSocket);
24         }
25         static Socket CreateSocket()
26         {
27             return new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
28         }
29         static void BindAndListen(Socket pSocket)
30         {
31             IPEndPoint iPEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888);
32             pSocket.Bind(iPEndPoint);
33             pSocket.Listen(1000);
34             Console.WriteLine("server Successful");
35         }
36         static Socket  Accept(Socket pSocket)
37         {
38            Socket connetClinet= pSocket.Accept();//如果客户端connect连接成功之后,这个函数就会返回客户端的这个socket
39             Console.WriteLine("握手成功:" + connetClinet);
40             return connetClinet;
41         }
42         static void Receive(Socket pSocket)
43         {
44             byte[] readBuffer = new byte[1024];
45             pSocket.Receive(readBuffer);
46             string readStr = Encoding.UTF8.GetString(readBuffer);
47             Console.WriteLine("转换接收到的消息:" + readStr);
48         }
49         static void Send(Socket pSocket)
50         {
51             string sendInfo = Console.ReadLine();
52             byte[] sendData = Encoding.UTF8.GetBytes(sendInfo);
53             pSocket.Send(sendData);
54         }
55         static void  Close(Socket pSocket)
56         {
57             pSocket.Close();
58         }
59     }
60 }                                   
复制代码

 

posted @   花生的小福蝶  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示