C#Socket网络编程(二) TCP服务器端和客户端连接

Socket(套接字)编程(Tcp)

 

 

1.基于Tcp协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端 主动推送消息。

使用Tcp协议通讯需要具备以下几个条件:

(1).建立一个套接字(Socket)

(2).绑定服务器端IP地址及端口号--服务器端

(3).利用Listen()方法开启监听--服务器端

(4).利用Accept()方法尝试与客户端建立一个连接--服务器端

(5).利用Connect()方法与服务器建立连接--客户端

(6).利用Send()方法向建立连接的主机发送消息

(7).利用Receive()方法接受来自建立连接的主机的消息(可靠连接)

 

服务器端:

 1 using System;
 2 using System.Net;
 3 using System.Net.Sockets;
 4 using System.Text;
 5 
 6 namespace TCP服务器端TcpServer
 7 {
 8     internal class Program
 9     {
10         static void Main(string[] args)
11         {
12             //Console.WriteLine("Hello World!");
13             //1234
14             // IP  192.168.1.145  Port端口号  内网=局域网 外网
15             //网络地址 
16             //城市 路 小区 单元 xx    小明收
17             //城市 路 小区 单元 xx 
18             // xx楼 x单元 xx
19             Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
20 
21             IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 1, 184 });
22             // IP + Port
23             IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 6688);
24             //绑定ipEndPoint
25             tcpServer.Bind(ipEndPoint);
26             //最大连接数
27             tcpServer.Listen(100);
28 
29             Console.WriteLine("开始接客了 ...");
30             //等待客户端连接
31             Socket client = tcpServer.Accept();
32             Console.WriteLine("一个客户端链接过来了");
33             //分配1024个字节大小的内存给data
34             byte[] data = new byte[1024];
35             //接收客户端消息
36             int length = client.Receive(data);
37             //转码
38             string message = Encoding.UTF8.GetString(data, 0, length);
39             Console.WriteLine("收到了客户端消息:" + message);
40             //向客户端发送消息
41             client.Send(Encoding.UTF8.GetBytes("你来了呀"));
42             //流结束时要关闭,遵循先开后关的原则
43             client.Close();
44 
45             tcpServer.Close();
46         }
47     }
48 }

 

客户端:

 
 1 using System;
 2 using System.Net.Sockets;
 3 using System.Net;
 4 using System.Text;
 5 
 6 namespace TCP客户端
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             //socket
13             Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
14             //ip
15             IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 1, 184 });
16             //ip + Port(端口)
17             IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 6688);
18             //连接服务器端
19             tcpClient.Connect(ipEndPoint);
20             Console.WriteLine("链接上服务器端了");
21             //向服务器发送消息
22             //转码为byte字节发送
23             tcpClient.Send(Encoding.UTF8.GetBytes("我连接上了"));
24             //分配1024个字节大小的内存给message
25             byte[] message = new byte[1024];
26             //接收消息
27             int length = tcpClient.Receive(message);
28             //转码为string接收
29             string data = Encoding.UTF8.GetString(message, 0, length);
30             Console.WriteLine("收到服务器消息:" + data);
31             //关闭Socket
32             tcpClient.Close();
33         }
34     }
35 }

 

 

客户端与服务器连接成功

 

posted @ 2022-04-18 20:14  小羊Coyang  阅读(1722)  评论(0编辑  收藏  举报