.Net网络编程——使用TcpClient与TcpListener建立客户端与服务端连接

简介:               一,.NET中如何实现建立连接                         在网络中,我们可以通过IP地址唯一定位一台主机,而在主机中,我们要确定收到的数据包发给谁,可以通过端口号,端口号的作用简单说就是不至于使你要发给QQ好友的消息数据包被错误发到了你的OC程序上。



           

  一,.NET中如何实现建立连接



                        在网络中,我们可以通过IP地址唯一定位一台主机,而在主机中,我们要确定收到的数据包发给谁,可以通过端口号,端口号的作用简单说就是不至于使你要发给QQ好友的消息数据包被错误发到了你的OC程序上。


              通常,我们把发起连接的那一端称为客户端,这是主动的一方;而静默等待连接到来的那一端作为服务端。这个概念是比较相对的。


              在.Net中,我们可以使用TcpClient来建立连接,使用TcpListener来监听连接,从而在客户端和服务端建立连接。



二,服务端建立监听


                   

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace 服务端对端口进行侦听
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("服务端正在运行呀。。。");
            //IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
           // IPAddress ip = IPAddress.Parse("127.0.0.1");
            IPAddress ip = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0]; //同上
            TcpListener listener = new TcpListener(ip, 8500);  //选择侦听端口

            listener.Start();//开始侦听

            Console.WriteLine("开始侦听啦。。。");
            Console.WriteLine("\n\n输入\"Q\"键退出。。");
            ConsoleKey key;
            do
            {
                key = Console.ReadKey(true).Key;

            } while (key!=ConsoleKey.Q);
        }
    }
}


   启动程序后,使用netstat -a查看端口情况:





     


   发现端口正在listening....




三,客户端与服务端建立连接



         在服务端侦听端口打开的情况下,就可以与服务端端口进行连接啦:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace 服务端与客户端的连接
{
    class Program
    {
        static void Main(string[] args)
        {

            #region 客户端与服务端连接

                //Console.WriteLine("客户端启动啦啦啦。。");
                //TcpClient client = new TcpClient();

                //try
                //{
                //    //与服务器进行连接
                //    client.Connect(IPAddress.Parse("127.0.0.1"), 8500);

                //}
                //catch (Exception ex)
                //{
                //    Console.WriteLine(ex.Message);
                //    return;
                //}

                ////打印连接到服务端的信息
                //Console.WriteLine("服务端连接成功啦。。本地IP端口为:{0}------>服务IP端口为:{1}", client.Client.LocalEndPoint, client.Client.RemoteEndPoint);//client.Client获得到套接字

            #endregion

            #region 多个客户端与服务端的连接

                Console.WriteLine("客户端启动啦啦啦啦。。。。");
                TcpClient client;

                for (int i = 0; i < 2; i++)
                {
                    try
                    {
                        client = new TcpClient();//每创建一个新的TcpClient便相当于创建了一个新的套接字Socket与服务端通信,.Net会自动为这个套接字分配 一个端口号。
                        //与服务器建立连接
                        client.Connect(IPAddress.Parse("127.0.0.1"), 8500);

                    }
                    catch (Exception ex)
                    {

                        Console.WriteLine(ex.Message);
                        Console.WriteLine(ex.StackTrace);
                        return;
                    }
                    Console.WriteLine("服务端连接成功啦。。本地IP端口为:{0}------>服务IP端口为:{1}", client.Client.LocalEndPoint, client.Client.RemoteEndPoint);//client.Client获得到套接字
                }

            #endregion


        }
    }
}



   连接时,主要是使用TcpClient对象,传入要连接的服务端的IP和端口号,就像发邮件那样,只要选择好存在的发件人,就能发送那样。




       


           

                    

目录
相关文章
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】32. 卷积神经网络之稠密连接网络(DenseNet)介绍及其Pytorch实现
【从零开始学习深度学习】32. 卷积神经网络之稠密连接网络(DenseNet)介绍及其Pytorch实现
|
1月前
|
Java Linux 测试技术
Java sdk连接fabric网络的谜之报错
Java sdk连接fabric网络的谜之报错
109 0
|
21天前
|
存储 Java 网络安全
如何使用Python批量连接网络设备?
【7月更文挑战第4天】
22 1
如何使用Python批量连接网络设备?
|
20天前
|
网络协议 网络架构
【网络编程入门】TCP与UDP通信实战:从零构建服务器与客户端对话(附简易源码,新手友好!)
在了解他们之前我们首先要知道网络模型,它分为两种,一种是OSI,一种是TCP/IP,当然他们的模型图是不同的,如下
|
29天前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之怎么把将客户端所在的网络和实例配置到同一环境去
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
1月前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
36 3
|
10天前
|
JSON 数据挖掘 API
在会议系统工程中,Python可以用于多种任务,如网络请求(用于视频会议的连接和会议数据的传输)、数据分析(用于分析会议参与者的行为或会议效果)等。
在会议系统工程中,Python可以用于多种任务,如网络请求(用于视频会议的连接和会议数据的传输)、数据分析(用于分析会议参与者的行为或会议效果)等。
|
20天前
|
安全 NoSQL Java
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
|
1月前
|
分布式计算 NoSQL 大数据
MaxCompute产品使用合集之自定义udf连接云上vpc网络的redis获取数据的步骤是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
22天前
|
网络协议 网络安全
使用NetAssist网络调试助手在单台计算机上配置TCP服务器和客户端
使用NetAssist网络调试助手在单台计算机上配置TCP服务器和客户端
48 0