C#socket编程——TCP协议创建服务器端和客户端并进行通信

C#socket编程——TCP协议创建服务器端和客户端并进行通信

2023年7月15日发(作者:)

C#socket编程——TCP协议创建服务器端和客户端并进⾏通信我们做⽹络通信的时候需要有,在进⾏socket编程的时候有两种通信协议TCP、UDP,这次我们就⽤简单的⽅式在⼀台电脑建⽴TCP协议的服务器端和客户端并使之进⾏通信。服务器端和客户端进⾏连接,第⼀步就⾏在服务器端创建⼀个,开始监听客户端的连接,然后在客户端创建⼀个socket,向服务器端发起连接,这样连接建⽴起来之后就可以进⾏数据的交换。由于Visual Studio⼀个解决⽅案下边只能启动⼀个项⽬,所以我们要创建两个解决⽅案(打开两个VS),⼀个解决⽅案下边创建服务器端,另⼀个解决⽅案下边创建客户端(均为控制台应⽤程序)。我们先来看完整的代码,之后在分步骤进⾏解释服务器端:82936373839404142using System;using ;using s;using ;

namespace socket编程_TCP协议_服务器端{ class Program { static void Main(string[] args) { //1.创建socket Socket tcpServer = new Socket(etwork, , );

//2.绑定IP跟端⼝号 IPAddress ipaddress = new IPAddress(new byte[] { 192,168,1,145 }); EndPoint point = new IPEndPoint(ipaddress, 5566); (point);//向操作系统申请⼀个可⽤的IP地址和端⼝号,⽤来做通信

//3.开始监听 等待客户端连接 (100);//参数为最⼤连接数 ine("开始监听");

Socket clientSocket = ();//暂停当前线程,直到有⼀个客户端连接 //使⽤返回的Socket跟客户端做通信 ine("⼀个客户端连接");

//4.向客户端发送数据 string message = "Hello"; byte[] data = es(message); (data);//Send⽅法只能接受byte类型,于是先把数据转为byte类型。 ine("向客户端发送⼀条数据");

//5.接收客户端的数据 byte[] data2 = new byte[1024];//创建字节数组接收客户端的数据 返回值length表⽰接收了多少字节的数据 int length = e(data2); string message2 = ing(data2, 0, length); //只把接收到的数据(0 - length)进⾏转化 ine("接收到了⼀条消息:" + message2);

y(); } }}客户端:8293031323334using System;using ;using s;using ;

namespace socket编程_TCP协议_客户端{ class Program { static void Main(string[] args) { //1.创建Socket Socket tcpClient = new Socket(etwork, , );

//2.发起建⽴连接请求 IPAddress ipaddress = ("192.168.1.145"); EndPoint point = new IPEndPoint(ipaddress, 5566); t(point);//通过IP和端⼝号,定位⼀个要连接到的服务器端

//3.接收数据 byte[] data = new byte[1024]; int length = e(data);//传递⼀个byte数组,实际上是⽤来接收数据 返回值length表⽰接收了多少字节的数据 string message = ing(data,0,length);//只把接收到的数据(0-length)进⾏转化 ine(message);

//4.向服务器端发送消息 string message2 = ne();//读取⽤户输⼊ (es(message2));//把字符串转为字节数组 发送到服务器端

y(); } }}下边我们来分布进⾏解释1.⾸先我们先来创建服务器端(1)创建Socket(Socket属于命名空间s下的⼀个类),参数选择InterNetwork(内⽹)、Stream(流),以及我们的Tcp协议。12//1.创建socketSocket tcpServer = new Socket(etwork, , );(2)绑定IP跟端⼝号每个计算机都有⼀个⽹络的地址(也可能有多个⽹卡,就会有不同的IP地址,我们要选择指定的IP地址进⾏通信),局域⽹的地址⼀般为,即为IP地址,但是仅仅获取IP地址就可以了吗?显然是不⾏的,每个计算机都有很多软件,需要通信的软件有很多个,如果只通过IP地址发送数据,计算机并不能判断数据要发送给哪个软件,所以这个时候就需要通过端⼝号区分数据所要分配的软件,每个软件申请的端⼝号是唯⼀的,端⼝号⼀般为0-60000。所以通过IP地址找到计算机,通过端⼝号找到软件,我们才可以进⾏通信。如何查看本机的IP地址?在控制台中输⼊ipconfig,回车。这⾥可以看到我的IP地址为192.168.1.145。端⼝号可以随便取,这⾥我们就采⽤5566。接着我们继续写代码1234//2.绑定IP跟端⼝号IPAddress ipaddress = new IPAddress(new byte[] { 192,168,1,145 });EndPoint point = new IPEndPoint(ipaddress, 5566);(point);//向操作系统申请⼀个可⽤的IP地址和端⼝号,⽤来做通信(3)开始监听 等待客户端连接12345//3.开始监听 等待客户端连接(100);//参数为最⼤连接数ine("开始监听");Socket clientSocket = ();//暂停当前线程,直到有⼀个客户端连接 //使⽤返回的Socket跟客户端做通信ine("⼀个客户端连接");(4)向客户端发送消息12345//4.向客户端发送数据string message = "Hello";byte[] data = es(message);//Send⽅法只能接受byte类型,于是先把数据转为byte类型。(data);ine("向客户端发送⼀条数据");(5)接收消息、12345//5.接收客户端的数据byte[] data2 = new byte[1024];//创建字节数组接收客户端的数据 返回值length表⽰接收了多少字节的数据int length = e(data2);string message2 = ing(data2, 0, length); //只把接收到的数据(0 - length)进⾏转化ine("接收到了⼀条消息:" + message2);2.创建客户端(1)创建Socket12//1.创建SocketSocket tcpClient = new Socket(etwork, , );(2)发起建⽴连接请求1234//2.发起建⽴连接请求 IP地址和端⼝号要和服务器端保持⼀致IPAddress ipaddress = ("192.168.1.145");//此⽅法也可以绑定IP地址EndPoint point = new IPEndPoint(ipaddress, 5566);t(point);//通过IP和端⼝号,定位⼀个要连接到的服务器端(3)接收数据12345//3.接收数据byte[] data = new byte[1024];int length = e(data);//传递⼀个byte数组,实际上是⽤来接收数据 返回值length表⽰接收了多少字节的数据string message = ing(data,0,length);//只把接收到的数据(0-length)进⾏转化ine(message);(4)向服务器端发送消息123//4.向服务器端发送消息string message2 = ne();//读取⽤户输⼊(es(message2));//把字符串转为字节数组 发送到服务器端——————————————————————————————————————————————————此时我们已经可以进⾏测试,⾸先启动服务器端然后启动客户端,此时服务器端已经发⽣变化向服务器端发送消息此时⼀个简单的tcp协议的通信已经完成。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689410830a243625.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信